-
[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