Information Security
PART3 057 문자열 복사 - 063 문자열의 길이 구하기 본문
057 문자열 복사하기(strcpy)
2: strcpy() 함수가 선언되어 있는 헤더 파일(string.h)을 포함한다.
-함수의 원형: char* strcpy(char* dest, const char* src);
-dest(destination): 문자열을 입력 받을 버퍼의 포인터를 입력한다.
-src(source): 복사할 문자열을 입력한다.
058 문자열을 복사하는 함수 만들기
15-20: 모든 문자열의 길이가 0(첫 문자의 값이 NULL인 경우)이면, dest를 NULL로 설정한 후 NULL을 반환한다.
23: dest가 가리키는 번지에 src가 가리키는 번지의 값을 대입한 후 dest의 번지를 1 증가시킨다.
28: src가 가리키는 번지의 값이 NULL 인지 비교한다. NULL이면 루프를 빠져나가고, NULL이 아니라면 src의 번지를 1 증가시킨다.
059 문자열을 대·소문자로 구분하여 비교하기(strcmp)
2: strcmp() 함수가 선언되어 있는 헤더 파일(string.h)을 포함한다.
-함수의 원형: int strcmp(const char* src1, const char* src2);
-src1: 비교 대상 문자열, src2: 비교 문자열
13: 문자열을 입력받는다.
14: 문자열을 비교한다. src1과 src2의 아스키 값을 하나하나 순서대로 비교하여 모든 값이 일치할 경우에는 0을, src1의 값이 더 큰 경우에 1, src1의 값이 더 작은 경우에 -1을 반환한다.
※ strcmp() 함수는 문자열을 대·소문자를 구분하여 비교한다. 문자열을 대·소문자를 구분 없이 비교하려면 _stricmp() 함수를 사용해야 한다.
-_stricmp() 함수의 원형: int_stricmp(const char *string1, const char *string2);
060 문자열을 비교하는 함수 만들기
26: 모든 문자열의 길이가 0이면 같은 것으로 처리하여 0을 반환한다.
30: 비교할 문자열 string2가 없다면 1을 반환한다.
31: string1이 가리키는 번지의 문자 값과 string2가 가리키는 번지의 문자 값이 같은 경우, 다음 문자 값의 비교를 위하여 string1과 string2의 번지를 1씩 증가시킨다.
35: 증가시킨 후 continue를 만나면 36번째 줄로 이동한다.
37, 38: 문자 값을 비교하여 string1이 작다면 -1, 크다면 1을 반환한다.
40, 41: string1이 가리키는 번지의 값이 NULL이 될 때까지 비교한 후 string2가 가리키는 번지의 값이 NULL이 아니라면 -1을 반환한다. NULL이라면 문자열은 일치되는 것이므로 0을 반환한다.
061 문자열을 일정 크기만큼 비교하기(strncmp)
2: strncmp() 함수가 선언되어 있는 헤더 파일(string.h)을 포함한다.
-함수의 원형: int strncmp(const char* src1, const char* src2, unsigned int count);
-src1: 비교 대상 문자열, src2: 비교 문자열, count: 비교할 바이트 수
062 문자열 연결하기(strcat)
2: strcat() 함수가 선언되어 있는 헤더 파일(string.h)을 포함한다.
-함수의 원형: char* strcat(char* dest, const char* src);
-dest: 첫 번째 문자열에 대한 포인터 값, src: 두 번째 문자열에 대한 포인터 값
-문자열은 dest 문자열에 추가되기 때문에 dest는 src 문자열을 추가할 만큼의 충분한 버퍼가 있어야 한다.
15: str1에 str2를 연결한다. str1이 str2 문자열을 추가할 만큼의 충분한 버퍼가 없으면 에러가 발생하므로 충분한 버퍼가 있도록 정의해야 한다.
'L' |
'e' |
'e' |
'\0' |
|
|
|
|
|
|
'Y' |
'e' |
'r' |
'i' |
'm' |
'\0' |
|
|
|
|
'L' |
'e' |
'e' |
'Y' |
'e' |
'r' |
'i' |
'm' |
'\0' |
|
-str1과 str2를 연결하여 str1에 저장한다.
※ strncat(): 문자열 결합을 수행하지만 원본 문자열에서 목적 문자열의 마지막에 추가되는 문자의 개수를 지정할 수 있게 해준다.
-함수의 원형: char* strncat(char* dest, const char* src, unsigned int count);
063 문자열의 길이 구하기(strlen)
2: strlen() 함수가 선언되어 있는 헤더 파일(string.h)을 포함한다.
-함수의 원형: unsigned int strlen(const char* string);
-문자열 string을 인수로 전달받아 문자열의 길이를 반환한다.
19: 무한 루프를 사용하여 아무것도 입력하지 않았을 경우에만 15번째 줄의 if 문이 참이 되어 루프를 빠져나올 수 있다.
※영어를 사용하지 않는 아시아 지역 대부분의 언어들이 한 글자당 2바이트를 사용한다.
'C언어 300제 > PART 3' 카테고리의 다른 글
PART3 C 프로그래밍 레디 고! 051-056 (0) | 2017.04.07 |
---|