반응형
// 문자열 비교
/* strcmp(dest, srt) 에서 dest==srt 면 0을 반환
dest<src면 음수값 반환
dest>src면 양수값 반환
*/
#include <stdio.h>
#include <string.h>
int main()
{
char s1[]="ABCD";
char s2[]="ABCD";
char s3[]="abcd";
char s4[]="abc";
printf("%d\n", strcmp(s1, s2)); // 문자열이 같으면 0을 반환한다.
printf("%d\n", strcmp(s1, s3)); // 대소문자 가린다. 아스키 코드상 대문자가 소문자보다 10진수로 적다.
// 따라서 음수값 반환
printf("%d\n", strcmp(s3, s4)); // s3가 s4보다 크다. 따라서 양수값 반환
printf("%d\n", strncmp(s3, s4, 3)); // s3와 s4는 다르지만 strncmp함수를 이용해 3번째 까지만 비교한다.
// 따라서 abc까지만 비교하므로 0을 반환
return 0;
}
// 문자열 검색
strchr(char *s1, int c) : s1 문자열 중에 c와 일치하는 문자의 포인터 반환
strrchr(char *s1, int c) : 위와 같지만 마지막에 일치하는 문자의 포인터를 반환
strstr(char *s1, char *s2) : s2에 있는 문자열과 일치하는 첫 번째 s1의 문자열의 포인터를 반환
strpbrk(char *s1, char *s2) : s2에 있는는 첫번째 문자와 일치하는 첫 번째 s1의 문자의 포인터를 반환
// 단문자 일치하는 위치 찾기
#include <stdio.h>
#include <string.h>
int main()
{
char *s="This is a string";
char *ptr1, *ptr2;
char c='s';
ptr1=strchr(s, c);
ptr2=strrchr(s, c);
printf("ptr1의 위치 : %d, s의 위치 : %d\n", ptr1, s);
printf("ptr1-s의 위치 : %d\n", ptr1-s); // strchr은 포인터를 반환하므로 prt1에서 s를 빼면
// 일치하는 위치가 나타난다.
printf("ptr1의 위치 : %d, s의 위치 : %d\n", ptr2, s);
printf("ptr1-s의 위치 : %d\n", ptr2-s); // strrchr은 문자열 중에 마지막으로 일치하는곳의 포인터를 반환한다.
return 0;
}
// 문자열 검색
#include <stdio.h>
#include <string.h>
int main()
{
char *s1="This is a string";
char *s2="is a";
char *ptr;
ptr=strstr(s1, s2); // s2의 문자열이 s1과 모두 같을 때 부터의 문자열을 출력
printf("%s\n", ptr);
ptr=strpbrk(s1, s2); // s2의 문자열중 첫번째 문자열이 같을때 부터의 문자열을 출력
printf("%s\n", ptr);
return 0;
}
// 문자 일치와 불일치의 연속길이를 잰다
#include <stdio.h>
#include <string.h>
int main()
{
char *s1="ABCDEFGHI";
char *s2="00AB111CG";
char *s3="CDEFG1111";
int length;
length=strspn(s1, s2); // s1 첫번째 문자부터 순서대로 s2에 있는지 체크하고 길이를 잰다.
printf("%d\n", length); // ABC까지 연속으로 일치하고 D는 s2에 없기때문에 3의 길이를 반환하고 끝내기 때문에 G는 체크하지 못한다.
length=strcspn(s1, s3); // s1 첫번째 부터 s3에 없기 때문 C가 나올때 까지 길이를 잰다.
printf("%d\n", length); // C가 나오면 일치하기 때문에 불일치한 길이를 반환한다.
return 0;
}
반응형
'System Programmings > C' 카테고리의 다른 글
[C] 나눗셈의 몫과 나머지 (div(), ldiv()) (0) | 2010.08.07 |
---|---|
[C] 절대값 및 부호 바꾸기 (abs(), lasb(), fabs()) (0) | 2010.08.07 |
[C] 문자열 복사, 대체, 삽입 (strncpy(), mommove(), memcpy(), strcat(), strncat()) (0) | 2010.08.07 |
[C] 문자열 -> 숫자 / 숫자 -> 문자열 (atoi(), atof(), strtod(), strtol(), strtoul()) (0) | 2010.08.06 |
[C] 문자열 역순으로 바꿔저장하기 (한/영) (0) | 2010.08.06 |