favicon Jay Lee DevLog

📚 목차

문자열 관련된 함수들도 맨날 까먹는 거 같다.

그래서 정리해두려 한다.

물론 그냥 작업하는 프로젝트 내에서 검색해서 사용하면 되긴 하지만..

맨땅에 헤딩하는 경우도 있으니,

여기에 정리해두도록 하자.

 

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 strTest[200] = "jj-yy-55/tt:hh";

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 strTest2[200] = "I want to go home now.";
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으로 변환

 

 

 

 

 

 

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.