초보자들이 하는 실수:
char str1[]="123";
char str2[]="123";
if(str1==str2)
printf("equal");
else
printf("not equal");
이런 식의 문자열 비교는 배열 str1과 str2의 주소 값을 비교하는 것이다. 배열의 이름은 배열의 주소 값을 의미한다!
1
2
3
4 |
#include <string.h>
int strcmp(const char * s1, const char * s2);
int strncmp(const char * s1, const char * s2, size_t n); |
cs |
Tip~! 문자열 비교를 해보면 ABC와 ABD를 비교하고, printf를 찍어보면 C와 D의 아스키코드 차이값인 양수 1반환
ABC와 ABE를 비교해보면, 양수 2반환
strcmp("ABCD", "ABCDE"); 를 하면 널 문자도 비교 대상에 속하므로, E의 아스키코드 값이 널의 아스키 코드 0보다 크므로 음수가 반환된다.
'언어 > C' 카테고리의 다른 글
구조체(structure) - 기초 (0) | 2016.01.08 |
---|---|
알아두면 도움이 되는 헤더파일 stdlib.h에 선언된 함수들(참고용-소켓프로그래밍 시간에 사용) (0) | 2016.01.08 |
문자열을 덧붙이는 함수들 strcat, strncat (0) | 2016.01.07 |
문자열 복사하는 함수들 strcpy, strncpy (0) | 2016.01.07 |
문자열의 길이를 반환하는 함수 strlen (0) | 2016.01.06 |