본문 바로가기

프로그래밍./C언어.

문자열 입.출력 함수(puts, fputs, gets, fgets)

문자열 출력 함수의 원형
int puts(const char* s);
int fputs(conts char* s, FILE* stream);

puts, fputs 모두 하나의 문자열를 출력할 때 일반적으로 사용하는 함수이다.
차이점은 puts은 모니터로 출력하지만, fputs는 출력 스트림을 지정할 수 있다는 것.
즉, file로 출력 할 수도 있고, 모니터로 출력할 수도 있다.
추가로 puts는 자동으로 줄을 바꿔준다. 


줄바꿈을 보여주기 위한 간단한 예제
#include <stdio.h>
void main()
{
fputs("fputs 함수의 의한 출력, ", stdout);
fputs("I LOVE YOU ", stdout);

fputs("\n", stdout);

puts("puts 함수에 의한 출력, ");
puts("I LOVE YOU");
}
해보면 알겠지만, fputs는 줄이 넘어가지 않고 옆으로 계속 이어지고
puts는 한번 끝나면 자동으로 다음줄로 넘어간다.




문자열 입력 함수의 원형.
int gets(char* s);
int fgets(char* s, int n, FILE* stream);

gets, fgets 모두 문자열을 입력할 때 일반적으로 사용하는 함수이다.
때문에 입력받을 문자열을 저장하기 위한 배열을 선언한 다음 시작 주소를 넘겨주어 사용.
차이점은 puts은 키보드로 입력 하지만, fputs는 입력 스트림을 지정할 수 있다는 것.
즉, file로 부터 입력 받을 수도 있고, 키보드로 입력 받을 수도 있다.
추가로 fgets는 입력받을 문자열의 최대길이를 정할 수 있다.
puts는 그렇지 못하기 때문에 지정된 크기 보다 많은 입력이 들어와 오버플로우를 발생하기도 한다.
때문에 실제로 프로그래밍을 하는 경우 fgets만을 사용한다고 한다. 

간단한 사용 예제
#include <stdio.h>
void main()
{
char str[10];                                           //입력 받아 저장할 배열이 필요.
fputs("문자열을 입력 하세요 : ", stdout);
fgets(str, sizeof(str), stdin);                     //sizeof(str)을 통해 최대 입력 길이 지정.

fputs("입력된 문자열 ", stdout);
fputs(str, stdout);
}


유익한 정보가 되셨다면 아래의 추천도 부탁드려요 ^-^