본문 바로가기
IT/c언어

C 언어 fflush 함수

by 뉴코딩맨 2023. 7. 17.
C 언어는 프로그래밍 언어 중 가장 널리 사용되는 언어 중 하나입니다. 이 언어는 많은 기능과 라이브러리를 제공하여 개발자들이 다양한 응용 프로그램을 작성할 수 있게 합니다. C 언어에서는 데이터를 입출력하기 위해 버퍼를 사용하는데, 이때 fflush 함수를 사용하여 버퍼를 비우는 작업을 할 수 있습니다. fflush 함수의 사용 방법과 예제에 대해 알아보겠습니다.

 

 

fflush 함수

fflush 함수는 주로 출력 스트림을 위해 사용됩니다. 이 함수의 목적은 출력 버퍼를 비우고(또는 플러시) 버퍼에 있는 데이터를 실제 디스크 파일이나 터미널에 출력하는 것입니다.
 
#include <stdio.h>

int main() {
   printf("Hello, world!");
   fflush(stdout);

   return 0;
}
 
위의 예제에서 fflush(stdout)는 출력 버퍼를 비우고 버퍼에 있는 데이터를 터미널에 출력합니다. printf 함수로 "Hello, world!"를 출력한 후 fflush 함수를 사용하여 출력 버퍼를 비웁니다. 프로그램을 실행하면 "Hello, world!"가 터미널에 표시됩니다.
 
Hello, world!
 
fflush 함수는 주로 출력을 즉시 터미널에 표시하기 위해 사용됩니다. 예를 들어, 중요한 정보를 출력하고 버퍼를 즉시 비워야 할 때 fflush 함수를 사용할 수 있습니다.
 
 

주의 사항

fflush(stdin)은 C 언어에서 정의되지 않은 동작을 일으킬 수 있습니다. stdin은 입력 스트림으로 사용되는데, 입력 버퍼를 비우기 위해 fflush 함수를 사용하는 것은 잘못된 사용입니다. 따라서 fflush(stdin)을 호출하는 대신 다른 방법을 사용해야 합니다.
 
올바른 입력 버퍼를 비우기 위한 방법 중 하나는 getchar 함수를 사용하는 것입니다. 아래는 입력 버퍼를 비우기 위한 예제 코드입니다.
 
#include <stdio.h>

void clearInputBuffer() {
   int c;
   while ((c = getchar()) != '\n' && c != EOF);
}

int main() {
   printf("이름을 입력하세요: ");
   fflush(stdout);

   char name[50];
   fgets(name, sizeof(name), stdin);

   // 입력 버퍼 비우기
   clearInputBuffer();

   printf("안녕하세요, %s님!\n", name);

   return 0;
}
 
위의 예제에서 clearInputBuffer 함수는 입력 버퍼를 비우기 위해 사용됩니다. getchar 함수를 사용하여 개행 문자(\n)까지 입력 버퍼를 읽고 지웁니다. 이후 fgets 함수를 사용하여 이름을 입력받고, clearInputBuffer 함수를 호출하여 입력 버퍼를 비웁니다.
 

결론

C 언어에서 fflush 함수는 출력 스트림의 버퍼를 비우고 데이터를 실제로 출력하는 데 사용됩니다. 이 함수를 사용하여 출력 버퍼를 즉시 비울 수 있으며, 중요한 정보를 터미널에 즉시 표시하는 데 유용합니다. 그러나 fflush(stdin)은 정의되지 않은 동작을 일으킬 수 있으므로 사용하지 않는 것이 좋습니다. 대신 getchar 함수 등을 사용하여 입력 버퍼를 비워야 합니다.
 

 

'IT > c언어' 카테고리의 다른 글

C 언어 strcpy strncpy 함수  (0) 2023.07.17
C 언어 strlen 함수  (0) 2023.07.17
C 언어 gets fgets  (0) 2023.07.17
C 언어 puts fputs  (0) 2023.07.17
C 언어 putchar, fputc 함수  (0) 2023.07.16

댓글