반응형
C언어 문자열 단위 입출력 함수 puts, fputs, gets, fgets
■ 문자열 출력 함수: puts, fputs
문자열을 출력할 때 일반적으로 두 함수를 사용합니다.
#include <stdio.h>
int puts(const char * s);
int fputs(const char * s, FILE * stream);
// 실패 시 EOF 반환
다음 코드를 통해서 두 함수의 차이를 찾아봅시다.
int main(void)
{
puts("How are you?");
fputs("Good,Thanks", stdout); printf("\n");
return 0;
}
puts 함수는 출력의 대상이 stdout으로 결정되어 있기 때문에 매개변수로 출력할 문자열만 넣으면 됩니다.
fputs 함수는 두 번째 인자를 통해서 출력 대상을 정해야합니다, 또한 함수 호출 뒤에 \n을 호출해서 별도의 개행 작업을 해야 합니다.
■ 문자열 입력 함수: gets, fgets
문자열을 입력할 때 일반적으로 두 함수를 사용합니다.
#include <stdio.h>
int gets(const char * s);
int fgets(const char * s, int n, FILE * stream);
// 파일의 끝에 도달하거나 함수호출 실패 시 NULL 포인터 반환
다음 코드를 통해서 두 함수의 차이를 찾아봅시다.
int main(void)
{
char str[7]; // 7바이트의 메모리 공간 할당
gets(str); // 입력 받은 문자열을 배열 str에 할당
fets(str, sizeof(str), stdin); // stdin으로부터 문자열 입력 받아서 str 저장
}
gets 함수는 문자열만 받으면 되니 문장 구성이 간단합니다. 하지만 미리 할당해둔 배열을 넘어서는 길이의 문자열이 입력되면 오류가 발생합니다. 그래서 가급적이면 fgets 함수를 사용합니다. fgets 함수에서는 세 번째 인자로 얼만큼 길이를 저장할 것인지 지정할 수 있기 때문입니다. 또 fgets 함수는 문자열을 입력 받으면 문자열의 끝에 자동으로 널 문자가 추가됩니다. 그래서 만약 7을 넣으면 하나 작은 수 6자리의 문자열이 저장됩니다.
-----------------------------------
-----------------------------------
반응형
'컴퓨터 공학 > C, C++' 카테고리의 다른 글
[ C ] 문자열 함수 이해하기6_입출력 이외의 문자열 관련 함수_strlen, strcpy, strcat, strcmp (411) | 2020.07.22 |
---|---|
[ C ] 문자열 함수 이해하기5_표준 입출력과 버퍼_버퍼링 하는 이유/fllush 함수/입력 버퍼 비우기 (398) | 2020.07.22 |
[ C ] 문자열 함수 이해하기3_문자 단위 입출력 함수_putchar, fputc, getchar, fgetc / EOF 이란 (418) | 2020.07.21 |
[ C ] 문자열 함수 이해하기2_스트림과 데이터의 이동 (375) | 2020.07.21 |
[ C ] 문자열 함수 이해하기1_C 스타일 문자열이란? / 문자열 길이 구하기 (393) | 2020.07.21 |
댓글