본문 바로가기
컴퓨터 이론/C언어 & 자료구조 & 알고리즘

06. 문자열

by 컴퓨터공부용 2023. 3. 21.

문자열은 포인터와 동적 메모리 파트에서 몇 번 다루어 봤으니 간단하게 설명하고 넘어가도록 하겠다.

 

문자열이란?

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

댓글