안녕하세요 오늘은 문자열 사용하는 것을 해 보겠습니다.
자바는 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 |
'프로그래밍 언어 > C언어' 카테고리의 다른 글
C언어 NULL포인터란? (0) | 2019.04.01 |
---|---|
포인터 사용 예시 (0) | 2018.11.21 |
C언어 포인터와 배열에대해 알아보기입니다. (0) | 2017.11.01 |
C언어 포인터 알아보기 입니다. (0) | 2017.10.26 |
C언어 공용체(union)에 대해 알아보기입니다. (0) | 2017.09.13 |