문자열은 문자들의 배열입니다

 

문자열은 컴퓨터 메모리 구조상에서 마지막에 널(NULL) 값을 포함합니다

널(NULL) 값은 문자열의 끝을 알리는 목적으로 사용됩니다

그러므로 printf() 함수를 실행하면 컴퓨터는 내부적으로 NULL을 만날때까지 출력합니다

 

C언어에서 문자열배열이므로 포인터 형태로 사용할 수 있습니다

 

문자열을 활용한 간단한 예시

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void) {
    char* a = "Hello World";
    printf("%s\n", a);
    system("pause");
    return 0;
}
cs

 

하나의 문자열 안의 글자수를 세는 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//하나의 문자열 안의 글자수 세기
int main(void){
    char input[1001];
    gets(input);
    int count = 0;
    while (input[count] != '\0') {
        count++;
    }
    printf("입력한 문자열의 길이는 %d\n", count);
    printf("입력한 문자는 %s",input);
    return 0;
}
cs

 

문자열 입출력 함수 예시

1
2
3
4
5
6
7
8
9
10
11
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main(void) {
    char a[100];
    gets_s(a, sizeof(a));
    printf("%s\n", a);
    system("pause");
    return 0;
}
 
cs

위와 같이 gets_s()를 이용하는 경우 범위를 넘으면 런타임(Runtime)오류가 발생하게 됩니다

 

 

문자열 처리를 위한 다양한 함수

  • strlen()   문자열의 길이를 반환합니다
  • strcmp()   문자열 1이 문자열 2보다 사전적으로 앞에 있으면 -1,뒤에 있으면 1을 반환
  • strcpy()   문자열을 복사합니다
  • strcat()   문자열 1에 문자열 2를 더합니다
  • strstr()   문자열 1에 문자열 2가 어떻게 포함되어 있는지를 반환합니다

 

strlen()를 활용한 예시

1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char inputOne[5= "A";
    char inputTwo[5= "B";
    printf("문자열 비교 : %d\n", strcmp(inputOne,inputTwo));
    return 0;
}
cs

inputOne 이 inputTwo 보다사전적으로 앞에 있기 때문에 -1을 반환합니다

 

 

strlen()를 활용한 예시 2

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main(void) {
    char a[20= "Byeonghak Jang";
    printf("문자열의 길이: %d\n", strlen(a));
    system("pause");
    return 0;
}
 
cs

 

1
2
3
4
5
6
7
8
#include <stdio.h>
#include <string.h>
 
int main(void) {
    char input[5= "LOVE";
    printf("문자열의 길이 : %d\n", strlen(input));
    return 0;
}
cs

 

strcmp()를 활용한 예시

 

 

strcmp()를 활용한 예시2

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void) {
    char a[20= "Byeonghak Jang";
    char b[20= "Hojjon Seok";
    printf("두 배열의 사전순 비교: %d\n", strcmp(a, b));
    system("pause");
    return 0;
}
 
cs

왼쪽에 있는 문자열이 사전적으로 앞에 있으므로 -1 을 반환합니다

 

 

strcpy()를 활용한 예시

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void) {
    char a[20= "My Name";
    char b[20= "Byeonghak Jang";
    strcpy(a, b);
    printf("복사된 문자열: %s\n", a);
    system("pause");
    return 0;
}
 
cs

 

strcat()를 활용한 예시

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void) {
    char a[30= "My Name is ";
    char b[20= "Byeonghak Jang";
    strcat(a, b);
    printf("합쳐진 결과 문자열: %s\n", a);
    system("pause");
    return 0;
}
 
cs

두 문자열을 합치기 때문에 글자 수를 char a[20] 에서 char a[30] 으로 늘렸습니다

 

strstr()를 활용한 예시

1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main(void) {
    char a[20= "I like you";
    char b[20= "like";
    printf("찾은 문자열: %s\n", strstr(a, b));
    system("pause");
    return 0;
}
cs

실행하게 되면 like부터 찾은 이후의 모든 문자열을 반환하게 되므로 like you 가 반환됩니다

 

'C' 카테고리의 다른 글

다차원 배열과 포인터 배열  (0) 2021.02.10
C언어에서 변수를 처리하는 방법  (0) 2021.02.10
문자 : 아스키 코드(Ascii Code) , 버퍼(Buffer)  (0) 2021.02.08
포인터  (0) 2021.02.08
배열  (0) 2021.02.08

+ Recent posts