C언어를 사용하면서 자주 사용한다고 생각되는 API를 모아 정리했다.
문자열 길이
char vect[10] = "ABCDEFG";
printf("%d ", strlen(vect)); // 7
printf("%d ", strlen(&vect[0])); // 7
printf("%d ", strlen(&vect[2])); // 5
printf("%d\\n", strlen(vect + 2)); // 5
문자열 복사
char vect[10] = "ABCDEFG";
char temp[10];
strcpy(temp, vect);
strncpy(temp, vect, 3);
printf("%s\\n", temp); // ABC
문자열 연결
char vect[10] = "ABCDEFG";
char temp2[10] = "ABCD";
strcat(temp2, vect);
printf("%s\\n", temp2); // ABCDABCDEFG
문자열 비교
strcmp("aa", "bb")
strncmp("aa", "bb", 2)
결과
return | mean |
---|---|
0 | 문자열이 같음 |
-1 | 앞 문자열이 사전순으로 앞쪽에 있음 |
+1 | 앞 문자열이 사전 순으로 뒤쪽에 있음 |
원하는 모양으로 문자열 입력
char vect[30] = "[152.123] message 2";
float time;
char msg[30];
int num;
sscanf(vect, "[%f] %s %d", &time, &msg, &num);
원하는 모양으로 문자열 출력
char result[30];
float time = 30.123;
char msg[30] = "HI";
int num = 35;
sprintf(result, "[%.6f] %s %d", time, msg, num);
printf("%s", result);
ascii to integer
char buf[10] = "1234";
int v = atoi(buf);
string token. 문자열 자르기(split)
처음 사용 이후, NULL 을 매개변수로 주는 것에 주의
char buf[12] = "AA##BB##CC";
char *p;
for (p = strtok(buf, "#"); p != NULL; p = strtok(NULL, "#")) {
printf("%s ", p);
}
문자 검색
문자 c가 문자열에 존재한다면, 해당 위치에 대한 포인터를 리턴.
지정된 문자를 찾지 못하면 NULL 리턴.
char vect[10] = "ABCDEFG";
printf("%s ", strchr(vect, 'C'));
문자열 검색
string1에서 string2의 첫 번째 표시 위치를 검색.
string2를 찾지 못했다면 NULL 리턴.
string2가 길이가 0인 스트링을 가리치면 string1 리턴.
char vect[10] = "ABCDEFG";
printf("%s ", strstr(vect, "BCD"));