C - 문자와 문자열

2022. 3. 10. 21:57C

문자를 저장하기 위해 만들어진 char형이 있다. 하지만 char형은 문자 하나만 저장이 가능하다.

문자열은 그럼 못쓰는건가? 

char형의 배열을 이용하면 사용이 가능하다.

 

"HELLO"라는 문자열을 문자 배열로 저장하면 

5번 인덱스까지 값이 있다. 왜냐하면  '\0' 즉 NULL으로 문자열의 종료를 알려야 하기 때문이다.

문자열을 저장하기 위해 10바이트의 문자 배열을 잡았다고 가정 했을 경우 Seoul을 저장하기 위해 5바이트가 사용이 된다. 그럼 남은 5바이트에는 쓰레기 값이 저장되기 때문이다. 컴퓨터에게 알려주기 위함이니 꼭 들어가야한다.

 

* A, 'A', "A"의 차이점

A : 변수의 이름

'A' : 문자 A를 나타낸다

"A" : 문자 A만으로 이루어진 문자열을 나타낸다. "A"뒤엔 문자열의 끝을 알리는 NULL문자가 추가 된다.

 

문자 배열에 저장된 문자열을 출력하기 위해 반복문으로 각 배열의 원소를 출력해도 되지만 printf()함수의 %s 형식 지정자를 이용하면 좀 더 간단하게 출력이 가능하다.

char str1[6] = "Seoul";
char str2[3] = {'i', 's','\0'};
char str3[] = "the capital city of Korea";

 printf("%s %s %s\n", str1 ,str2, str3);

출력 결과

Seoul is the capital city of Korea

 

하나의 문자열에 저장된 문자들을 다른 문자 배열로 복사하는 예제이다.

char src[] = "Hello, my name is inho";
char dst[100];
printf("원본 문자열 = %s\n", src);
for (int i = 0; src[i] != '\0'; i++) {
    dst[i] = src[i];
}
    printf("복사된 문자열 = %s\n", dst);

출력 결과

원본 문자열 = Hello, my name is inho
복사된 문자열 = Hello, my name is inho

 

문자열의 길이를 구하는 프로그램이다.

char src[] = "Hello, my name is inho";
int i = 0;
while (src[i] != 0) {
    i++;
}
printf("문자열 %s의 길이는 %d 입니다.",src, i);

출력 결과

문자열 Hello, my name is inho의 길이는 22 입니다.

while문의 조건을 보면 src[i] != 0의 의미를 해석해보자

i번째 문자의 값이 0(NULL)이 나올때까지 계속해서 i값을 증가 시킨다는 뜻이다.

 

라이브러리 함수 strcpy()를 이용하여 문자열을 문자 배열에 복사하는 예제이다.

char str[10] = "Hello";
strcpy(str, "World");
printf("%s", str);

출력 결과

World

'C' 카테고리의 다른 글

C - 함수 포인터  (0) 2022.03.11
C - 문자 입출력 라이브러리  (0) 2022.03.10
C - 구조체  (0) 2022.03.09
C - 이중 포인터  (0) 2022.03.09
C - 자동변수와 정적변수  (0) 2022.03.08