ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C/C++] 문자열 라이브러리 함수
    기초/C,C++ 2017. 2. 27. 10:22

    문자열 라이브러리 함수

     

    strlen : 문자열 길이 구하기

    strcpy : 문자열 초기화

    strcat : 문자열 연결하기

    strcmp : 문자열 비교하기

    strstr : 문자열 찾기

    strupr : 대문자로 치환

    strlwr : 소문자로 치환

     

    관련된 헤더

    #include<string.h>

    →상위 버전에서는 stdio.h에 포함되어있다고 하네요!

     

    [문자열 길이 반환]

    strlen(문자열);

    문자열 길이를 정수형으로 반환합니다.

     

     

     

    이떄 printf();

    도 정수형 타입으로 들어가면 문자열 길이가 자동으로 들어간다는것을 알 수 있습니다.

    하지만 출력이 되어버리므로 사용은 자제하는게 좋을 것 같네요

     

    [문자열 초기화]

    strcpy(문자열 변수, 문자열);

     

     

    이때 문자열변수에는 char*(포인터)형은 되지않습니다.

    ctrcpy()함수의 원형은

    char* strcpy(char* dest, const char* src); 입니다.

     

    두번째 인수에는 const 키워드(상수)가 붙어있습니다.

    즉 포인터형은 strcpy()함수 내부에서 변형되기 때문에 사용할 수 없습니다.

    dest에 문자열 상수를 넘겨줄 수 없기 때문에 문자열 상수를 가리키는 문자형 포인터 값 또한 사용할 수 없다는 것입니다.

     

    그러므로 dest에 넘겨줄 수 있는 것은 문자배열 등 입니다.

    포인터 값을 굳이 쓰고 싶다면 문자열 포인터 변수안에 문자열 배열을 지정하면 됩니다.

     

    src는 모든 문자열, 상수, 변수값이 들어갈 수 있습니다.

    이떄 const는 상수처럼 사용되기 때문에 반드시 "초기화 값"을 넣어줘야 합니다.

    따라서 strcpy(string2, NULL);은 메모리 0번지에 문자열을 복사하라는 의미임으로 메모리 오류가 발생합니다.

     

    [문자열 연결]

    strcat(문자열1, 문자열2);

    문자열1과 문자열2를 붙인다.

     

     

     

    [문자열 비교]

    int strcmp(const char*s1, const char*s2);

    문자열1과 문자열2를 비교해서 int값으로 넘겨준다

     

    [반환값]

    0 : 문자열1 문자열2는 동일한 문장이다.

    >0 : 문자열1은 문자열2보다 앞에 있다.

    <0 : 문자열1은 문자열2보다 뒤에 있다.

     

    앞에있다?? 뒤에있다??

    문자열들을 ASCII코드로 치환했을때

    정수형의 숫자를 비교해서 비교하는 것입니다.

     

    따라서 ABCDE는 ABCDE와 동일한 문장이지만

    ABCDE와 abcde는 비교값이 0보다 작은값이 나오게 되는것입니다.

     

     

     

    대소문자를 굳이 비교하기 싫다면

    _stricmp 함수를 사용하시면 됩니다

    <비교>

     

     

     

    [문자열 찾기]

    strstr(string1,string2);

    string1에서 string2를 찾습니다.

    문자열을 찾지 못하면 NULL 값이 반환됩니다.

     

    [문자열 소문자, 대문자로 바꾸기]

    strupr(문자열); => 대문자로 바꿔버리기

    strlwr(문자열); => 소문자로 바꿔버리기

     

     

     

    ..이밖에도 많은 문자열에 관련된 함수들이 많지만

    필요한 함수 몇가지 포스팅 해봤습니다

    '기초 > C,C++' 카테고리의 다른 글

    [C,C++] 포인터와 배열  (0) 2017.03.02
    [C/C++] 포인터  (0) 2017.02.28
    [C/C++] 키워드  (2) 2017.02.24
    [C/C++] <Windows.h>  (0) 2017.02.24
    [C/C++] 난수 생성 rand(), srand(), time()  (0) 2017.02.24

    댓글

Designed by Tistory.