본문 바로가기
c언어

c언어 문자열 입출력 라이브러리에 대하여 알아보기

by 개발자 L 2022. 12. 24.
반응형

c언어 문자열 입출력 라이브러리에 대하여 알아보기

네 안녕하세요, 이번 포스팅에서는 문자열 입출력 라이브러리에 대하여 알아보도록 하겠습니다.

이전 포스팅에서는 문자 입출력 라이브러리에 대하여 알아보았는데요,

우리가 문자 하나만 가지고 처리를 하는 경우 보다는 문자열을 가지고 처리를 하는 경우가 훨씬 많습니다.

그래서 문자열 입출력 라이브러리에 대하여 알고 있는 것 역시 상당히 중요합니다.

그럼 지금부터 어떤 것들이 있는 지 한 번 알아보도록 하겠습니다.

지금부터 같이 보시죠.

 

1. 문자열 입출력 라이브러리

아래의 표는 문자열 입출력 라이브러리 함수의 종류입니다.

입출력 함수 설명
int scanf("%s", s) 문자열을 읽어서 문자 배열 s[]에 저장
int printf("%s", s) 배열 s[]에 저장되어 있는 문자열 출력
char gets_s(char *s, int size) 한 줄의 문자열을 읽어서 문자 배열 s[]에 저장
char puts(const, char *s) 배열 s[]에 저장되어 있는 한 줄의 문자열 출력

이렇게 있습니다.

 

1 - 1. scanf(), printf()를 이용한 문자열 입출력

scanf()와 printf()는 형식 지정자 '%s'를 사용하여 출력을 합니다.

그럼 간단한 코드와 함께 보시죠.

#include <stdio.h>

int main()

{
    char name[100];
    char addr[100];

    printf("이름을 입력하세요 : ");
    scanf("%s", name);

    printf("현재 거주하는 주소를 입력하세요 : ");
    scanf("%s", addr);

    printf("이름 : %s \n", name);
    printf("주소 : %s \n", addr);

    return 0;
}

이렇게 한 번 입력을 해봤는데,

결과를 한 번 보겠습니다.

이름을 입력하세요 : 홍길동
현재 거주하는 주소를 입력하세요 : 서울시 종로구 1번지
이름 : 홍길동
주소 : 서울시

이렇게 나옵니다.

근데 출력 결과가 좀 이상하지 않나요?

주소가 나오다가 잘렸습니다.

이건 scanf() 함수의 치명적인 단점인데,

공백 이후의 것들은 출력을 하지 못합니다.

그래서 문자열 전체가 출력이 되지 않는 겁니다.

그렇기 때문에 문자열을 올바르게 출력하기 위해서는 다른 라이브러리 함수를 쓰는데,

이때 쓰는 함수가 gets_s(), puts() 함수입니다.

반응형

 

1 - 2. gets_s(), puts() 함수

우리가 줄 전체를 입력받아서 출력을 하기 위해서는 scanf() 함수 대신 다른 함수를 써야 합니다.

그게 바로 gets_s() 합수입니다.

이 함수는 줄 바꿈 문자인 '\n'이 나오기 전까지의 모든 문자들을 입력받으며,

그 끝에는 문자열이기 때문에 자동으로 끝을 알리는 문자인 NULL 문자를 넣습니다.

그리고 gets_s() 함수를 통하여 입력을 받은 문자열은 puts() 함수를 통하여 출력을 합니다.

그리고 이 과정에서 gets_s() 함수로 인하여 추가되었던 NULL 문자가 줄 바꿈 문자인 '\n'으로 다시 변환이 되고,

출력 시 성공적으로 잘 출력이 되었다면 음수가 아닌 값이 나오고, 실패를 했다면 EOF(End Of File),

다시 말해 -1 값이 반환이 됩니다.

그럼 간단한 코드를 통하여 한 번 알아보도록 하겠습니다.

#include <stdio.h>

int main()

{
    char name[100];
    char addr[100];

    printf("이름을 입력하세요 : ");
    gets_s(name, 100);

    printf("현재 거주하는 주소를 입력하세요 : ");
    gets_s(addr, 100);

    puts(name);
    puts(addr);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그럼 결과를 한 번 보도록 하겠습니다.

이름을 입력하세요 : 홍길동
현재 거주하는 주소를 입력하세요 : 서울시 종로구 1번지


홍길동
서울시 종로구 1번지

이번에는 결과가 잘 나온 것을 볼 수 있습니다.

 

지금까지 문자열 입출력 라이브러리에 대하여 알아보았는데요,

다음 포스팅에서는 문자 처리 라이브러리에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사합니다~

반응형

댓글