📚 목차
문자열 관련된 함수들도 맨날 까먹는 거 같다.
그래서 정리해두려 한다.
물론 그냥 작업하는 프로젝트 내에서 검색해서 사용하면 되긴 하지만..
맨땅에 헤딩하는 경우도 있으니,
여기에 정리해두도록 하자.
char *strtok(char *string, char *delim) | string을 delim까지 자른다. |
#include <string.h>
char strTest[200] = "jj-yy-55/tt:hh"; char *strtokresult = strtok(strTest, "-");
do
{
printf("strtok result : %s\n", strtokresult);
}
while (strtokresult = strtok(NULL, "-"));
|
|
결과
![]() |
char* strtok_r(char *string, const char *seps, char **lasts) | string을 seps가 포함되어 있는 곳까지 자른다. strtok와 다르게 delimeter를 여러개 지정 할 수 있는 장점이 있다. |
#include <string.h>
#define DELIM_CHARS "/-: " char time[1024] = "jj-yy-55/tt:hh"; char *ptr;
char *next_ptr;
printf("time : %s\n", time);
ptr = strtok_r(time, DELIM_CHARS, &next_ptr);
while(ptr)
{ printf("ptr = %s\n", ptr);
ptr = strtok_r(NULL, DELIM_CHARS, &next_ptr);
}
|
|
결과
![]() |
int strcasecmp(const char *string1, const char * string2) | 대소문자 구별하지 않고 string1과 string2를 비교, 같으면 0 return |
int strcmp(const char *string1, const char *string2) |
대소문자 구분하며, strcasecmp와 return 값은 같다. |
#include <strings.h> // strcasecmp
#include <string.h> // strcmp
char time[1024] = "jj-yy-55/tt:hh";
char strTest[200] = "jj-yy-55/tt:hh";
int result = strcasecmp(time, strTest); // strcmp(time, strTest); if (result == 0)
printf("equal.\n");
else if (result > 0)
printf("string1이 string2보다 큼\n");
else if (result < 0)
printf("string1이 string2보다 작음\n");
|
|
결과
![]() |
char *strcat(char *string1, const char *string2) | string1에 string2를 연결 |
#include <string.h>
char time[1024] = "jj-yy-55/tt:hh";
char strTest[200] = "jj-yy-55/tt:hh";
char *catresult = strcat(time, strTest); printf("strcat result : %s\n", catresult);
|
|
결과
![]() |
char *strchr(const char *string, int c) | string에 c문자(아스키코드)가 처음 있는 위치부터 끝까지의 string을 반환 |
char *strstr(const char *string1, const char *string2) |
string에 string2가 처음 있는 위치부터 끝까지의 string을 반환 |
#include <string.h>
char *chrResult = strchr(strTest, '-'); // strstr(strTest, "55"); 사용시 result : 55/tt:hh printf("chrResult = %s", chrResult);
|
|
결과
![]() |
char *strcpy(char *string1, const char *string2) | string2를 string1에 내용을 복사한다.(덮어쓰기) |
#include <string.h>
char strTest[200] = "jj-yy-55/tt:hh"; char *cpyResult;
cpyResult = strcpy(strTest, strTest2);
printf("cpyResult : %s\n", strTest);
|
|
결과
![]() |
char *strdup(const char *string) | string 문자열을 복사한 후 리턴 |
#include <string.h>
char strTest2[200] = "I want to go home now."; char *cpyResult; cpyResult = strdup(strTest2);
printf("cpyResult : %s\n", cpyResult);
|
|
결과
![]() |
double strtod(const char *nptr, char **endptr) | string을 double로 변환 |
float strtof(const char *nptr, char **endptr) | string을 float으로 변환 |
long double strtold(const char *nptr, char **endptr) | string을 long double로 변환 |
long int strtol(const char *nptr, char **endptr, int base) |
string을 long으로 변환 |
long long int strtoll(char *string, char **endptr, int base) |
string을 long long으로 변환 |
unsigned long int strtoul(const char *nptr, char **endptr, int base) | string을 unsigned long으로 변환 |
unsigned long long int strtoull(const char *nptr, char **endptr, int base) | string을 unsigned long long으로 변환 |