C언어에서는 문자열을 처리하기 위해 여러가지 함수를 제공하고 <string.h>라이브러리 내에 존재한다.
대표적으로 쓰이는
- sizeof( 문자열의 byte크기를 알려줌)
- strlen( 문자열의 글자수를 알려줌)
- strcpy ( 문자열을 복사해줌 )
- strcmp (문자열을 비교해서 참,거짓을 알려줌)
- strcat ( 문자열을 결합해줌 )
4개의 함수에 대해 알아보도록 하겠다.
string.h 라이브러리 사용
#include<stdio.h>
#include<string.h>
사용하기 위해서는 #include<string.h> 를 선언해주어야 한다.
변수 선언
void main()
{
int cmp;
char name[] = "Superman";
char name1[20] = {'S','u','p','e','r'};
char name2[20];
name2[0] = 's';
name2[1] = 'u';
name2[2] = 'p';
name2[3] = 'e';
name2[4] = 'r';
name2[5] = '\0'
}
name, name1, name2의 문자열을 각각 다른방식으로 선언, 초기화
sizeof ( 문자열 바이트 수 )
printf("name size = %d\n", sizeof(name));
printf("name1 size = %d\n", sizeof(name1));
name의 byte 크기를 알려줌 name은 Superman 8글자가 들어가 있는것 처럼 보이지만 문자열의 끝은 null이 항상
들어가 있어서 9byte가나온다.
name1은 20으로 잡고 초기화를 했기때문에 문자열의 갯수와는 상관없이 20byte가 나온다.
strlen ( 문자열 수 )
printf("name len = %d\n", strlen(name));
printf("name1 len = %d\n", strlen(name1));
실제 문자열 ( null값 이전) 크기를 알려준다.
name = 8 ( superman)
name1 = 5 ( super )
strcpy ( 문자열 복사 )
strcpy(name1, name);
printf("%s\n%s\n\n", name, name1);
name1문자열에 name값을 복사할때는
name1 = name 이런식으로 선언하면 에러가 난다. ( 주소값을 복사해야한다.)
이렇게 주소값자체를 복사해주는 함수(strcpy)를 사용하는 방법
strcpy(name1, name); --> name1에 name문자열 복사 ( 뒤가 원본 )
strcpy(name1, "batman");
변수를 복사하는게 아니고 문자열을 직접 넣을수도 있다.
strcat ( 문자열 결합 )
strcat(name1, name);
printf("%s\n%s\n\n", name, name1);
name1 ( batman)에 name(superman)을 결합하여
name1에 batmansuperman이 된다.
*주의점
name1의 배열 사이즈를 초과하여 결합될경우 overflow가 발생한다.
strcmp ( 문자열 비교 )
strcpy(name1, name);
cmp = strcmp(name1, name);
printf("%d\n\n", cmp); // --> 0
strcpy(name1, "batman");
cmp = strcmp(name1, name);
printf("%d\n\n", cmp); // --> 1
문자열을 비교해 참이면 0, 참이 아니면 0이외의 값을 리턴해준다.
'언어 > C' 카테고리의 다른 글
[C언어] Struct ( 구조체 ) (0) | 2020.11.27 |
---|---|
[C언어] Visual Studio 한 프로젝트에서 여러 main() 함수 사용하는 방법 (2) | 2020.11.23 |
[C언어] Visual Studio로 C언어 파일 생성 (0) | 2020.11.23 |
[C언어] C언어의 특징 (0) | 2020.11.23 |