본문 바로가기
컴퓨터 공학/C, C++

[ C ] 문자열 함수 이해하기4_문자열 단위 입출력 함수_puts, fputs, gets, fgets

by hahehohoo 2020. 7. 21.
반응형

 

 

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언어 문법 총정리

목록 보러가기 

-----------------------------------

 

 

반응형


댓글