티스토리 뷰

Table of Contents


개요

strlen()

strcmp()

strcpy()

strcat()

문제




1. 개요


 문자열이 다른 변수형의 배열들과 다른 점은, 문자열 자체가 하나의 의미를 가지는 경우가 많다는 점입니다. int 변수가 여러 개가 모여 하나의 의미를 나타내는 경우는 거의 없지만, 문자가 모여 하나의 의미를 나타내는 경우는 굉장히 많습니다. 간단하게 문자를 사용하는 예시를 생각해보면 이름, 제목, 검색 키워드등이 있지요. 이들 모두 문자 한 개보다는 문자열로 표현해야 하는 경우가 많음을 알 수 있습니다. 따라서 문자열은 그 자체를 자유롭게 사용할 수 있어야 합니다.


 하지만 문자열도 결국 char들의 배열로 사용되며, 배열 전체를 하나의 변수만큼이나 자유롭게 쓰기는 굉장히 어렵습니다. 예를 들어 int형 변수에서 사용하는 대입 연산자 = 조차 문자열에선 사용하기 힘듭니다. 따라서 C언어에서는 문자열 처리를 쉽게 할 수 있도록 도와주는 문자열 관련 함수들을 지원해줍니다.


 이 글에서는 문자열에 이어서, C언어가 지원하는 문자열 관련 함수들 중 유용한 것들을 소개합니다. 이 곳에서소개되는 문자열 함수들은 전처리기 #include<string.h>를 필요로 합니다.




2. strlen()


 문자열에서도 소개한 적 있는 strlen()은 문자열의 길이를 반환해주는 함수입니다. 입력받은 주소부터 NULL문자까지의 거리를 이용해 길이를 측정합니다.


1
2
3
4
5
6
7
8
9
//code by RiKang, weeklyps.com
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char a[105]="abcdefg";
    printf("a의 길이 : %d",strlen(a));
    return 0;
}
cs

출력

a의 길이 : 7


 길이를 반환하기 때문에, int 변수로 받아서 사용할 수도 있습니다.


1
2
3
4
5
6
7
8
9
10
//code by RiKang, weeklyps.com
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char a[105]="abcdefg";
    int l = strlen(a);
    printf("a의 길이 : %d",l);
    return 0;
}
cs




3. strcmp()


 strcmp() 함수는 입력받은 두 개의 문자열을 서로 비교하는 함수입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
//code by RiKang, weeklyps.com
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char a[105]="abcdefg";
    char b[105]="abcdefg";
    char c[105]="bbbbbbb";
    char d[105]="aaaaaaa";
    printf("같을 경우 = %d\n",strcmp(a,b));
    printf("첫 번째 문자열이 사전순으로 빠를 경우 = %d\n",strcmp(a,c));
    printf("첫 번째 문자열이 사전순으로 느릴 경우 = %d\n",strcmp(a,d));
    return 0;
}
cs

출력

같을 경우 = 0

첫 번째 문자열이 사전순으로 빠를 경우 = -1

첫 번째 문자열이 사전순으로 느릴 경우 = 1


 strcmp()는 비교 결과를 위의 3가지 경우로 분류합니다. 먼저 두 문자열이 같을 경우엔 0, 첫 번째 문자열이 사전순으로 빠를 경우엔 -1, 느릴 경우엔 1을 반환합니다.




4. strcpy()


 strcpy() 함수는 문자열을 복사 붙여넣기하는 함수입니다.


1
2
3
4
5
6
7
8
9
10
11
//code by RiKang, weeklyps.com
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char a[105];
    char b[105]="abcdefg";
    strcpy(a,b);
    printf("%s\n%s\n",a,b);
    return 0;
}
cs

출력

abcdefg

abcdefg


 위의 출력 결과에서 알 수 있듯이, 두 번째 문자열의 내용이 첫 번째 문자열로 들어가는 형태입니다.




5. strcat()


 strcat() 함수는 두 개의 문자열을 하나로 합치는 함수입니다.


1
2
3
4
5
6
7
8
9
10
11
//code by RiKang, weeklyps.com
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char a[105]="aaaaaa";
    char b[105]="bbbbbb";
    strcat(a,b);
    printf("%s\n%s\n",a,b);
    return 0;
}
cs

출력

aaaaaabbbbbb

bbbbbb


 첫 번째 문자열의 뒤에 두 번째 문자열이 따라 붙는 식으로 합쳐지며, 두 번째 문자열은 변하지 않습니다




6. 문제


 (0) [BOJ 4999] 아!


 (1) [BOJ 5026] 박사 과정


 풀이 모음

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

[ C언어 ] 19. 구조체  (0) 2018.01.05
[ C언어 ] 18. 함수  (0) 2018.01.04
[ C언어 ] 17. 문자열 관련 함수  (0) 2018.01.03
[ C언어 ] 16. 포인터  (0) 2018.01.02
[ C언어 ] 15. 형 변환  (2) 2017.12.07
[ C언어 ] 14. 문자열  (0) 2017.12.04