Information Security

PART3 057 문자열 복사 - 063 문자열의 길이 구하기 본문

C언어 300제/PART 3

PART3 057 문자열 복사 - 063 문자열의 길이 구하기

leeeeye321 2017. 4. 10. 14:38

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