문자열은 포인터와 동적 메모리 파트에서 몇 번 다루어 봤으니 간단하게 설명하고 넘어가도록 하겠다.
문자열이란?
C언어에서 문자열은 문자의 배열로 이루어진 데이터 타입이다. 문자열을 표현할 때에는 큰 따옴표 (" ")를 사용한다.
예를 들어 "Hello!"는 문자열이다.
문자열을 다룰 때에는 문자열의 길이와 내용을 함께 고려해야 한다.
문자열 선언과 초기화
C언어에서 문자열을 선언하고 초기화하는 방법은 아래와 같다.
#include <stdio.h>
int main()
{
char str1[7] = {'H', 'e', 'l', 'l', 'o', '!', '\0'};
char str2[7] = "Hello!";
char *str3 = "Hello!";
printf("%s \n", str1);
printf("%s \n", str2);
printf("%s \n", str3);
return 0;
}
str1은 문자열을 문자의 배열로 선언하고 각 문자를 하나하나 초기화했으며, 마지막 문자는 Null 문자로 문자열을 끝을 나타냈다.
str2는 문자열을 큰 따옴표로 감싸서 초기화했다. 이 경우도 마지막 문자는 Null 문자로 되어 있다.
str3는 포인터로 선언하여 초기화한 경우이다. 이 경우 문자열은 메모리의 다른 곳에 저장되며, 포인터는 해당 메모리 주소를 가리키게 된다.
문자열 입출력
C언어에서 문자열을 입력받거나 출력하는 방법은 아래와 같다.
#include <stdio.h>
int main()
{
char str1[100];
scanf("%s", str1);
printf("%s\n", str1);
return 0;
}
다른 데이터 타입과 마찬가지로 scanf()로 입력, printf()로 해당 문자열을 출력할 수 있다.
그 밖에도 파일에서 한 줄씩 문자열을 읽어오는 fgets(), 문자열을 출력하고 자동으로 개행 문자를 넣어주는 puts() 뿐만 아니라 gets(), putc(), fputs() 등 다양한 문자열 입출력 함수가 있다. 하지만 gets()는 문자열의 길이를 검사하지 않아 입력 버퍼 오버플로우를 유발할 수 있어 사용이 권장되지 않는다.
'컴퓨터 이론 > C언어 & 자료구조 & 알고리즘' 카테고리의 다른 글
08. 재귀 함수 (0) | 2023.03.22 |
---|---|
07. 문자열 함수 라이브러리 (0) | 2023.03.21 |
05. 동적 메모리 할당(2) (0) | 2023.03.20 |
04. 동적 메모리 할당 (0) | 2023.03.20 |
03. 포인터(2) (0) | 2023.02.14 |
댓글