프로그래밍 언어/C언어

C언어 문자열 사용해보기

원원 2017. 11. 5. 15:29

안녕하세요 오늘은 문자열 사용하는 것을 해 보겠습니다.

자바는 String클래스가 있어서 문자열을 다루기 매우 쉽습니다. 그러나 C언어는 이런 것이 없어서 배열을 사용해서 문자열을 다뤄야 합니다.

먼저 문자열의 끝에는 NULL문자가 들어갑니다.(\0) 널 문자가 존재하는 이유는 문자열의 끝을 알려주기 위해서 입니다.




문자열 사용하기



배열을 선언해서 문자를 저장하면 문자열이 됩니다.

1
2
3
4
5
6
7
#include <stdio.h>
 
int main(void)
{
    char array[10= { 'a''b''c''d', NULL,'e','f' };
    printf("array : %s \n",array1);
}
cs




배열을 선언해서 문자를 저장하면 문자열이 됩니다.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(void)
{
    char array[10= "abcd";
    printf("array : %s \n", array);
    
    array[0= '1';
    printf("array : %s \n", array);
cs



1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void)
{
    char array[10];
    array = "abcd";
    array[10= "abcd";
}
cs

위의 코드는 에러가 걸립니다.

6번째줄에서 array 배열명은 상수포인터입니다. 그러나 "abcd"는 변수 포인터입니다.

7번째줄은 문자열 1개만 저장되어야하고 인덱스도 잘못되었습니다.






포인터를 선언해서 문자열을 저장 했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(void)
{
    char* array;
    array = "abcd";
    printf("array : %s \n", array);
    printf("%p \n", array);
 
    char* array_same;
    array_same = "abcd";
    printf("array_same : %s \n", array_same);
    printf("%p \n", array_same);
}
 
cs

array는 "abcd"를 가키기고 있습니다.

array_same은 "abcd"를 가리키고 있습니다.

둘이 같은 문자열을 가리키고 있어서 같은 주소가 나옵니다.

이와 같은 경우에서는

array[0] = '1'와 같은 연산이 안됩니다.




포인터 배열에 문자열 저장하기

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    char* array[5= {"AAA","BBB","CCC","DDD","EEE"};
    printf("array[0] : %s \n", array[0]);
    printf("array[1] : %s \n", array[1]);
    printf("array[2] : %s \n", array[2]);
    printf("array[3] : %s \n", array[3]);
    printf("array[4] : %s \n", array[4]);
}
cs