[C] 문자열 함수 정리 / stdio.h, string.h, stdio.h 구분
Programming

[C] 문자열 함수 정리 / stdio.h, string.h, stdio.h 구분

일시불

String.h

  • s1, s2 : char형 배열

  • strlen(char* ptr)
    문자열의 길이를 구한다. 문자열의 끝인 NULL은 포함하지 않음

  • strcmp(s1, s2)
    문자열1과 문자열2를 ASCII 코드 기준으로 비교한다.

    • -1 : 문자열2가 클 때
    • 0 : 두 문자열이 같을 때
    • 1 : 문자열1이 클 때
      다만 리눅스와 OSX에서는 문자열1의 ASCII코드값에서 문자열2의 코드값을 뺀 결과를 반환함.
  • strcpy(s1, s2)
    s2s1으로 문자열을 복사한다.

  • strcat(s1, s2)
    s1뒤에 s2 문자열을 붙인다.

  • strchr(s1, char)
    문자열 안에서 해당 문자를 검색하여 해당 문자의 포인터를 반환한다.

    char* s1 = "Hello World";
    char* ptr = strchr(s1, 'W');
    printf("%s", ptr);
    

    결과 : 해당 위치로부터 NULL까지 문자열을 출력.

    World
    
  • strrchr(s1, char)
    오른쪽부터 문자를 검색하여 해당 문자의 포인터를 반환함

  • strstr(s1, s2)
    문자열 안에서 문자열을 검색하여 해당 문자열의 포인터를 반환한다.

  • strtok(s1, char)
    문자를 기준으로 문자열을 자르고 잘린 부분은 NULL로 변한다. 따라서 문자열 리터럴에는 사용할 수 없다.

    char* s1 = "Hello World";
    char* ptr = strtok(s1, " "); // 공백을 기준으로 잘라냄
    printf("%s", ptr);
    ptr = strtok(NULL, " "); // NULL 다음 포인터로 이동 후 잘라냄
    printf("%s", ptr);
    

    결과

    Hello
    World
    

stdio.h

  • sprintf(s1, "%", val1, val2, ...)
    서식을 지정하여 문자열을 생성한다.

    char* array[10];
    sprintf(array, "%d %s", 10, "hello");
    

    정수를 문자열로 변환할 때

    sprintf(s1, "%d", 10); // 10진수
    sprintf(s1, "%x", 10); // 16진수 소문자
    sprintf(s1, "%X", 10); // 16진수 대문자
    

    실수를 문자열로 변환할 때

    sprintf(s1, "%f", 0.33333);
    

stdlib.h

  • atoi(s1)
    문자열을 정수로 변환한다.

  • atof(s1)
    문자열을 실수로 변환한다.

  • strtol(s1, ptr* end, int num)
    특정 진법으로 표기된 문자열을 정수로 변환한다.

    char s1[11]={"10 0x1"};
    char* end;
    int num1 = strtol(s1, &end, 10);
    int num2 = strtol(end, &end, 16);
    printf("%d\n", num1);
    printf("0x%x\n", num2);
    

    결과

    10
    0x1
    
  • strtof(s1, ptr* end, int num)
    문자열을 실수로 변환한다.