본문 바로가기
프로그래밍/C

[C언어] 문자열 길이(strlen()) / 비교하기(strcmp()) / 복사하기(strcpy()) / 붙이기(strcat()) / 만들기(sprintf()) / 검색(strchr(), strrchr(), strstr())

by B T Y 2017. 10. 17.
반응형

문자열 길이 구하기(strlen()) / 비교하기(strcmp()) / 복사하기(strcpy()) / 붙이기(strcat()) / 만들기(sprintf()) / 검색(strchr(), strrchr(), strstr())에 대해서 정리한다.




문자열 길이 구하기


  - 문자열 길이를 구할때는 strlen(문자열포인터) 혹은 strlen(배열) 형식을 사용한다.

    ( <string.h> 헤더 파일에 정의되어 있다 )

      * strlen() 함수를 이용해서 문자열의 길이를 구할때는 NULL은 길이에 포함하지 않는다.

        ( strlen()을 이용한 문자열 길이는 NULL 바로 앞까지의 길이를 구하는 것이다 )






문자열 비교하기


  - strcmp(문자열1, 문자열2) 형식을 사용해서 두 문자열이 같은지를 비교한다.

    ( <string.h> 헤더 파일에 정의되어 있다 )


     * ASCII 코드 기준으로 문자열2가 클때 -1(음수)를 반환

       ASCII 코드 기준으로 두 문자열이 같을때는 0을 반환

       ASCII 코드 기준으로 문자열1이 클 때 1을 반환


     * ASCII 코드 기준으로 비교하기 때문에 대소문자 구분을 한다.

     * 문자열 포인터에 NULL이 들어있으면 에러가 발생한다.


  - strcmp() 함수의 반환값은 운영체제에서 제공하는 C 표준 라이브러리에 따라 달라진다.

     * GCC, Clang이 리눅스, macOS에서 제공하는 표준 라이브러리를 사용하면 문자열1에서 문자열2를 

       빼는 규칙을 사용한다

       ( ASCII 코드 기준으로 계산을 해서 양수가 나오면 문자열1이 크고 음수가 나오면 문자열2가 크다. 

         ASCII 코드 기준으로 두문자열이 같으면 0 )


     * 윈도우에서 제공하는 C 표준 라이브러리를 사용하면 Visual Studio와 같은 반환 값 규칙을 가진다 ( 0, 1, -1을 반환)









문자열 복사하기


  - strcpy(대상문자열, 원본문자열) 형식을 이용한다.

    ( 마지막에 NULL 문자까지 복사된다 )


  - <string.h> 헤더 파일에 정의되어있다.

  - 보안경고로 컴파일에러가 발생하기 때문에 _CRT_SECURE_NO_WARNINGS를 넣어준다. (Visual Studio)




( 배열 형태의 문자열 복사 )





( 배열 형태의 문자열을 문자열 포인터에 복사 )







문자열 붙이기


  - strcat(최종문자열, 붙일문자열) 형식을 사용한다.

  - <string.h> 헤더 파일에 정의되어있다.

  - 마찬가지로 보안경고로 컴파일 에러가 발생해서 _CRT_SECURE_NO_WARNINGS를 넣어준다. ( Visual Studio )

  

   !! 최종문자열의 크기는 최소한 원래 있는 문자열에 붙일문자열의 크기만큼 더 있어야 한다.




( 배열 형태의 문자열 복사하기 )




( 배열 형태의 문자열을 문자열 포인터에 붙이기 )








문자열 만들기


  - sprintf(배열, 서식, 값) 형식을 사용한다.

     ( 값에는 직접 값을 입력 할수도 있지만 변수도 이용 가능하다 )


  - 서식을 지정해서 문자열을 만들고 그 값을 배열에 저장할 수 있다.

  - <stdio.h> 헤더 파일에 정의되어 있다.

  - sprintf() 함수도 Visual Studio에서는 보안 경고가 발생




( sprintf 함수를 사용해서 배열 형태로 문자열 )



( sprintf 함수를 사용해서 문자열 포인터에 문자열 만들기 )







문자열 검색


  - 특정 문자열을 검색하려면 strchr(대상문자열, 검색할문자) 형식을 이용한다.

     ( <string.h> 헤더 파일에 정의 되어있다 )


  - 문자열의 오른쪽 끝부터 문자로 검색하려면 strrchr(대상문자열, 검색할문자) 형식을 사용한다.

    ( 마찬가지로 <string.h> 헤더 파일에 정의되어 있다 )


  - 문자열에서 문자열을 검색하는 방법은 strstr(대상문자열, 검색할문자열) 형식을 사용한다.

    ( <string.h> 헤더 파일에 정의 )


  - 위 3가지 함수 모두 특정문자열을 찾으면 해당 문자로 시작하는 문자열의 포인터를 반환하고,

    문자가 없으면 NULL을 반환한다.


     * strchr(), strrchr(), strstr() 함수 모두 검색할 문자의 대소문자를 구분한다.

     * NULL 문자로 해당 문자열의 끝을 구분하기 때문에 해당 문자나 문자열을 찾으면 NULL 문자를 만나기전까지의 

       값에 대한 포인터 주소를 반환한다.





( strchr 함수로 문자 검색 )

 



( strrchr 함수로 문자 검색 )




( strstr 함수로 문자열 검색 )







반응형

댓글