강좌 & 팁
글 수 2,412
▶ 문자열 중에 특정 문자 찾기
#include <strings.h> #include <stdio.h> int main() { char data[] = "hello:world=ok"; char *sp, *dp; char mydata[20] = {0x00,}; sp = index(data, ':'); dp = rindex(data, '='); strncpy(mydata,sp+1, dp-sp-1); printf("[%s]\n", mydata); }
- 문자를 찾았다면 찾는 문자가 있는 부분의 포인터를 반환한다.
- 문자를 찾지 못했다면 NULL 을 반환한다.
▶ 문자열 중에 문자열을 찾기
#include <string.h> int main() { char *me = "my name=yundream"; char *mp; mp = strstr (me, "///")+1; printf("%s\n", mp); }문자열 에서 두번째 인수를 찾고
- 문자열을 찾았다면 찾은 문자열 위치의 포인터를 반환
- 문자열을 못 찾았다면 NULL 반환
▶ 문자열을 지정한 개수만큼 비교하기
#include <string.h> int main() { char *a = "abcdef"; char *b = "abcdefg"; printf("%d\n", strncmp(a, b, 4)); }strcmp() 와는 달리 지정한 개수만큼을 비교해서
- 0 : 문자열이 같다.
- - : 첫번째 인수가 작다
- + : 두번째 인수가 작다
▶ 문자열을 개수 만큼 복사하기
#include <strings.h> #include <stdio.h> int main() { char data[] = "hello:world=ok"; char *sp, *dp; char mydata[20] = {0x00,}; sp = index(data, ':'); dp = rindex(data, '='); strncpy(mydata,sp+1, dp-sp-1); printf("[%s]\n", mydata); }
▶ 문자열을 정수로 변환하기
#include <stdio.h> #include <stdlib.h> int main() { printf( "%d\n", atoi( "-567")); // 문자열을 integer 로 변환 printf( "%d\n", atoi( "\n-567")); // 문자열 앞의 공백문자, \t, \n 등은 무시 printf( "%d\n", atol( "-567")); // 문자열을 long 로 변환 }
▶ 문자열 복사하기
char tmp[100]; char *tmp2 = "123456789"; memset( tmp, 'j', 100); strcpy( tmp, tmp2); // strcpy() 는 문자열 끝의 NULL 까지 복사한다. printf( "%s\n", tmp); strncpy( tmp, tmp2, strlen( tmp2)); // 그러나 strncpy() 는 개수만큼 복사하므로 NULL 까지 복사되지 않는다. printf( "%s\n", tmp); // 그러므로 strncpy() 를 사용하려면, // NULL 을 복사 후에 붙여 넣기를 하거나, // 복사전에 아예 memset() 을 이용하여 NULL 로 도배를 한다.
▶ 모두 대문자로 변환
#includevoid to_upper_str( char *buff) { while( *buff) *buff++ = (char)toupper( (char)*buff); }