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번지
이번에는 결과가 잘 나온 것을 볼 수 있습니다.
지금까지 문자열 입출력 라이브러리에 대하여 알아보았는데요,
다음 포스팅에서는 문자 처리 라이브러리에 대하여 알아보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사합니다~
'c언어' 카테고리의 다른 글
c언어 문자열 처리 라이브러리에 대하여 알아보기 1(문자열의 길이 구하기, 문자열 복사하기, 문자열 연결하기) (0) | 2022.12.29 |
---|---|
c언어 문자 처리 라이브러리에 대하여 알아보기 (0) | 2022.12.25 |
c언어 문자 입출력 라이브러리에 대하여 알아보기 (0) | 2022.12.22 |
c언어 문자와 문자열에 대하여 알아보기 (0) | 2022.12.20 |
c언어 포인터 이용하여 여러가지 문제 풀어보기(영상 처리 하기, 자율 주행 시뮬레이션 구현하기) (0) | 2022.12.13 |
댓글