c문법,  C를 최신언어로 마이그 하면서 자주 보게되는 것 중 하나  strcmp/strncmp



c coding >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


/*

 * test.c

 *

 *  Created on: 2018. 11. 17.

 *      Author: DIFY

 */


#include <stdio.h>

#include <string.h>

#define _CRT_SECURE_NO_WARNINGS


int main()

{

int iresult = 0;

char sResult[30];

char * sSample1 = "ABCDA";

char * sSample2 = "ABCD";

char * sSample3 = "ABCDA";


char * iSample1 = "12345";

char * iSample2 = "1234";

char * iSample3 = "12345";


   /*char*************************************************************/

iresult = strcmp( sSample1, sSample2 );

sprintf(sResult, "%d", iresult);    // %d정수를 문자열로 set

printf("[sSample1:%s,sSample2:%s]=>결과값(sSample1>sSample2) : %s\n", sSample1, sSample2, sResult);


iresult = strcmp( sSample2, sSample1 );

sprintf(sResult, "%d", iresult);

printf("[sSample1:%s,sSample2:%s]=>결과값(sSample1<sSample2) : %s\n", sSample1, sSample2,sResult);


iresult = strcmp( sSample1, sSample3 );

sprintf(sResult, "%d", iresult);

printf("[sSample1:%s,sSample3:%s]=>결과값(sSample1=sSample3) : %s\n", sSample1, sSample3,sResult);


iresult = strncmp( sSample1, sSample2,4 );

sprintf(sResult, "%d", iresult);

printf("[sSample1:%s,sSample2:%s]=>결과값(sSample1,sSample2 4자리까지비교) : %s\n",sSample1, sSample2, sResult);


iresult = strncmp( sSample1, sSample2,5 );

sprintf(sResult, "%d", iresult);

printf("[sSample1:%s,sSample2:%s]=>결과값(sSample1,sSample2 5자리까지비교(ASCII 코드값)) : %s\n", sSample1, sSample2,sResult);



iresult = strncmp( sSample2, sSample1,5 );

sprintf(sResult, "%d", iresult);

printf("[sSample2:%s,sSample1:%s]=>결과값(sSample2,sSample1 5자리까지비교(ASCII 코드값)) : %s\n", sSample2, sSample1,sResult);



/*int*************************************************************/

iresult = strcmp( iSample1, iSample2 );

sprintf(sResult, "%d", iresult);

printf("[iSample1:%s,iSample2:%s]=>결과값(iSample1>iSample2) : %s\n", iSample1, iSample2, sResult);


iresult = strcmp( iSample2, iSample1 );

sprintf(sResult, "%d", iresult);

printf("[iSample1:%s,iSample2:%s]=>결과값(iSample1<iSample2) : %s\n", iSample1, iSample2,sResult);


iresult = strcmp( iSample1, iSample3 );

sprintf(sResult, "%d", iresult);

printf("[iSample1:%s,iSample3:%s]=>결과값(iSample1=iSample3) : %s\n", iSample1, iSample3,sResult);


iresult = strncmp( iSample1, iSample2,4 );

sprintf(sResult, "%d", iresult);

printf("[iSample1:%s,iSample2:%s]=>결과값(iSample1,iSample2 4자리까지비교) : %s\n",iSample1, iSample2, sResult);


iresult = strncmp( iSample1, iSample2,5 );

sprintf(sResult, "%d", iresult);

printf("[iSample1:%s,iSample2:%s]=>결과값(iSample1,iSample2 5자리까지비교(ASCII 코드값)) : %s\n", iSample1, iSample2,sResult);



iresult = strncmp( iSample2, iSample1,5 );

sprintf(sResult, "%d", iresult);

printf("[iSample2:%s,iSample1:%s]=>결과값(iSample2,iSample1 5자리까지비교(ASCII 코드값)) : %s\n", iSample2, iSample1,sResult);



return 0;


}


 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

console 결과값

[sSample1:ABCDA,sSample2:ABCD]=>결과값(sSample1>sSample2) : 1

[sSample1:ABCDA,sSample2:ABCD]=>결과값(sSample1<sSample2) : -1

[sSample1:ABCDA,sSample3:ABCDA]=>결과값(sSample1=sSample3) : 0

[sSample1:ABCDA,sSample2:ABCD]=>결과값(sSample1,sSample2 4자리까지비교) : 0

[sSample1:ABCDA,sSample2:ABCD]=>결과값(sSample1,sSample2 5자리까지비교(ASCII 코드값)) : 65

[sSample2:ABCD,sSample1:ABCDA]=>결과값(sSample2,sSample1 5자리까지비교(ASCII 코드값)) : -65

[iSample1:12345,iSample2:1234]=>결과값(iSample1>iSample2) : 1

[iSample1:12345,iSample2:1234]=>결과값(iSample1<iSample2) : -1

[iSample1:12345,iSample3:12345]=>결과값(iSample1=iSample3) : 0

[iSample1:12345,iSample2:1234]=>결과값(iSample1,iSample2 4자리까지비교) : 0

[iSample1:12345,iSample2:1234]=>결과값(iSample1,iSample2 5자리까지비교(ASCII 코드값)) : 53

[iSample2:1234,iSample1:12345]=>결과값(iSample2,iSample1 5자리까지비교(ASCII 코드값)) : -53




서식
문자
출력 형태
c 문자
d or i 부호 있는 십진법으로 나타난 정수
e 지수 표기법(Scientific notation) 으로 출력하되, e 문자를 이용한다.
E 지수 표기법(Scientific notation) 으로 출력하되, E 문자를 이용한다.
f 십진법으로 나타낸 부동 소수점 수
g %e나 %f 보다 간략하게 출력
G %E나 %f 보다 간략하게 출력
o 부호 있는 팔진수
s 문자열
u 부호없는 십진법으로 나타낸 정수
x 부호없는 16 진법으로 나타낸 정수 (소문자 사용)
X 부호없는 16 진법으로 나타낸 정수 (대문자 사용)
p 포인터 주소
n 아무것도 출력하지 않는다. 그 대신, 인자로 부호 있는 int 형을 가리키는 포인터를 전달해야 되는데, 여기에 현재까지 쓰여진 문자 수가 저장된다.
(참고, eclipse에서 c 사용하기, http://blog.moramcnt.com/?p=1272 )


'프로그래밍 > C언어' 카테고리의 다른 글

C언어 strcmp/strncmp문법알아보기  (0) 2018.11.17


C#에서 mariadb 사용하기

https://dev.mysql.com/downloads/connector/net/

Download Connector/NET(mysql-connector-net-8.0.13.msi)

mysql-connector-net-8.0.13.msi



 

C#프로젝트 [참조]에 라이브러리를 추가한다.(1개 : MySql.Data.dll)

C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.13\Assemblies\v4.5.2\MySql.Data.dll




<dbconnection class>에서 아래 라이브러리 이용하여 커넥션 클래스 구성.

오라클,msSql, mariadb 모두 비슷한 패턴임.

------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using MySql.Data.MySqlClient;


namespace testWebApplication1

{

    public class MariaDbAccess

    {


        #region 멤버변수


        private MySqlConnection oCnn = null;

        /// <summary>

        /// DB 연결 스트링

        /// </summary>

        private string _connectionString = "SERVER=서버;DATABASE=데이타베이스명;UID=아이디;PASSWORD=패스워드;";


------------------------------------------------


'프로그래밍 > c#' 카테고리의 다른 글

c#에서 mariadb사용하기  (0) 2018.11.10
WebBrowser이용한 스크린스크래핑  (0) 2018.05.09
WebBrowser.DocumentText 한글깨짐  (0) 2018.05.07
using MySqlConnector  (0) 2018.05.07

Open Api 를 이용해서 Request & Response 된 데이타를 

테이블에 저장하도록 한다.

Schema구성


>kakao open api 분석

>스키마구성



>mysql table 스크립트

-- <table SCHEMA> START-----------------------

CREATE TABLE `requestdata` (
`SQSeq` bigint(20) NOT NULL AUTO_INCREMENT,
`SearchKind` varchar(20) NOT NULL DEFAULT 'WEB',
`Query` varchar(100) NOT NULL,
`SearchDate` date NOT NULL,
PRIMARY KEY (`SQSeq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `responsedata` (
`SQSeq` bigint(20) NOT NULL,
`SubSeq` bigint(20) NOT NULL,
`Title` varchar(300) NOT NULL DEFAULT 'ETC',
`Contents` varchar(4000) DEFAULT NULL,
`Url` varchar(1000) DEFAULT NULL,
`Thumbnail_url` varchar(1000) DEFAULT NULL,
`Authors` varchar(1000) DEFAULT NULL,
`Price` int(11) DEFAULT NULL,
`Width` int(11) DEFAULT NULL,
`Height` int(11) DEFAULT NULL,
`Category` int(11) DEFAULT NULL,
`Datetime` date DEFAULT NULL,
`Etc` varchar(200) DEFAULT NULL,
PRIMARY KEY (`SQSeq`,`SubSeq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- <table SCHEMA> END-----------------------



>스토어 프로시저로 등록/삭제

-- [START]요청 REQUESTDATA INSERT----------------

DELIMITER //

DROP PROCEDURE IF EXISTS SP_REQUESTDATA_INSERT //

CREATE PROCEDURE SP_REQUESTDATA_INSERT
(
IN InSearchKind varchar(20),
IN InQuery varchar(100),
OUT NewSQSeq bigint(20)
)

BEGIN
INSERT INTO requestdata
(
SearchKind
,Query
,SearchDate
)
VALUES
(
InSearchKind,
InQuery,
sysdate()
);

-- Auto Increment 값 조회
SELECT LAST_INSERT_ID()
INTO NewSQSeq; -- OUT 파라메터 담기

END//

DELIMITER ;
-- [END]요청 REQUESTDATA INSERT------------------


-- [START] 요청/결과 삭제 SP_REQUESTDATA_DELETE----
DELIMITER //

DROP PROCEDURE IF EXISTS SP_REQUESTDATA_DELETE //

CREATE PROCEDURE SP_REQUESTDATA_DELETE
(
IN InSQSeq bigint(20)
)

BEGIN

declare iResult bigint(20);
set iResult = 0;

DELETE FROM requestdata
WHERE SQSeq = InSQSeq;

DELETE FROM responsedata
WHERE SQSeq = InSQSeq;

END//

DELIMITER ;
-- [END]요청/결과 삭제 SP_REQUESTDATA_DELETE-------


-- [START]결과 SP_RESPONSEDATA_INSERT------------
DELIMITER //

DROP PROCEDURE IF EXISTS SP_RESPONSEDATA_INSERT //

CREATE PROCEDURE SP_RESPONSEDATA_INSERT
(
IN InSQSeq   bigint(20)
,IN InTitle   varchar(300)
,IN InContents    varchar(4000)
,IN InUrl varchar(1000)
,IN InThumbnail_url   varchar(1000)
,IN InAuthors varchar(1000)
,IN InPrice   int(11)
,IN InWidth   int(11)
,IN InHeight  int(11)
,IN InCategory    int(11)
,IN InDatetime    varchar(100)
,IN InEtc varchar(200)
,OUT OutResult bigint(20)
)

BEGIN

declare NewSubSeq bigint(20) default(0);

SELECT
IFNULL(MAX(SUBSEQ),0) + 1 into NewSubSeq
FROM RESPONSEDATA
WHERE SQSeq = InSQSeq;
SET OutResult = NewSubSeq;

INSERT INTO responsedata
(
SQSeq 
,SubSeq   
,Title    
,Contents 
,Url  
,Thumbnail_url    
,Authors  
,Price    
,Width    
,Height   
,Category 
,Datetime 
,Etc  
)
values
(
InSQSeq   
,NewSubSeq
,InTitle  
,InContents   
,InUrl    
,InThumbnail_url  
,InAuthors    
,InPrice  
,InWidth  
,InHeight 
,InCategory   
,date(InDatetime) 
,InEtc    
);


END//

DELIMITER ;
-- [END]결과 SP_RESPONSEDATA_INSERT--------------



>프로시저실행해서 등록하기


call SP_REQUESTDATA_INSERT('Book','삶의철학산책',@NewSQSeq);
select @NewSQSeq;

call SP_RESPONSEDATA_INSERT(1,'드 보통의 삶의 철학산책','복잡하고 힘겨운 삶을 유쾌하게 만드는 삶의 거장들이 알려주는 행복의 철학. 인기없음, 가난, 좌절, 부당함, 실연, 고통에 대한 허브 치료와도 같은 유쾌한 위안을 한권의 책으로 엮었다.','http://book.daum.net/detail/book.do?bookid=KOR9788984980624','https://t1.daumcdn.net/thumb/R72x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbook%2FKOR9788984980624%3Fmoddttm=20160223080929','알랭 드 보통',17000,0,0,5,'2002-04-25T00:00:00.000+09:00','8984980625 9788984980624',@OutResult);

select @OutResult;

call SP_RESPONSEDATA_INSERT(1,'고대 로마+한강역사문화탐사+삶의철학산책','&#39;고대 문명 시리즈&#39; 두 번째 권으로 고대 로마를 찾아간다. 로마의 사회, 정치, 문화, 예술의 다양한 면모를 가능한 명료하고 직접적으로 기술하여 로마를 직접 체험하는 느낌을 가질 수...','http://book.daum.net/detail/book.do?bookid=BOK00000039062LI','http://t1.daumcdn.net/thumb/P72x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbook%2FBOK00000039062LI%3Fmoddttm=20150609170927','안나 마리아 리베라티',95000,0,0,0,'2003-07-20T00:00:00.000+09:00','0004953282 0100004953286',@OutResult);

response된data.txt




'프로그래밍 > PHP' 카테고리의 다른 글

Open Api Request / Response Schema구성&실행  (0) 2018.08.19
curl kakao open api 도서검색  (0) 2018.08.10
curl kakao open api 이미지검색하기  (0) 2018.08.06
curl kakao open api사용하기  (0) 2018.08.05
php CURL 사용하기  (0) 2018.07.31
Javascript로 Facebook로그인  (0) 2018.05.26

+ Recent posts