티스토리 뷰

C언어 함수 fprintf()와 fscanf()의 개념부터 예제 소스까지 모든 것 총망라!


함수 fprintf()와 fscanf()를 이용한 파일 저장과 내용 읽기를 해보도록 하겠습니다.
함수 fprintf()는 특정 내용을 파일에 저장할 때 사용하는 함수, 함수 fscanf()는 파일에 있는 내용을 읽을 때에 사용하는 함수라고 할 수 있겠습니다.



 함수 fprintf()와 fscanf()의 원형  

함수 fprintf()와 fscanf()의 원형을 확인해 보도록 하겠습니다.


맨 앞의 입출력에 이용되는 첫번째 인자는 표준 입출력에도 이용할 수 있습니다.
이 말이 무엇이냐하면 함수 fprintf()와 fscanf()의 첫 번째 인자에 stdin 또는 stdout을 이용하면 표준 입력, 표준 출력으로 이용이 가능하다는 것입니다.

여기서 stdin, stdout, stderr은 헤더 파일 stdio.h에 정의되어 있습니다. 
그냥 넘어가면 뭔가 찜찜하기 때문에 Dev C++에서 stdio.h 파일을 확인해 보도록 하겠습니다.


위의 그림은 Dev C++이 설치되어 있는 폴더에서 stdio.h파일을 찾아 캡쳐한 것입니다. 여기서 STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO를 찾아보니 아래와 같이 나오는 군요


c언어는 이같이 표준입출력을 제공하며 표준입출력도 하나의 파일이기 때문에 표준파일이라 합니다.
그러면 표준 파일의 종류에 대해서 알아보도록 하겠습니다.



 fscanf(), fprintf()의 사용 예  

함수 fscanf()의 사용 예를 보도록 하겠습니다.


// 파일 포인터인 file_ptr에서 정수를 읽어 cnt 변수에 넣습니다
fscanf( file_ptr, "%d", &cnt ) ;

// 파일 포인터인 file_ptr에서 문자열을 읽어 name 변수에 넣습니다.
fscanf ( file_ptr, "%s", &name ) ;



함수 fprintf()의 사용 예를 보도록 하겠습니다.

// 화면에 번호를 출력합니다.
fprintf(stdout, "%s", "번호") ;

// 파일 포인터인 file_ptr에 번호라고 기록합니다.
fprintf(file_ptr, "%s", "번호") ;



 종합 예제  

예제1> fprintf를 이용한 예제
// 예제1) 
// 이름을 입력받아 입력받은 이름을 test.txt에 기록하는 예제

#include<stdio.h>
#include<stdlib.h>

int main()
{
	char fname[] = "test.txt";
	char name[30] ;
	
	FILE *f ;
	
	printf("your name?\n") ;
	scanf("%s", &name ) ;
	
	// open test.txt
	if ( (f = fopen(fname, "w")) == NULL)
	{
		printf("File open error.") ;
		exit(1) ;	
	}
	
	// write test.txt
	fprintf(f, "%s", name) ;
	
	// close
	fclose(f) ;
}

글 잘 보셨나요?
 잘 보셨다면 아래에 손가락 모양을 꾹 눌러주세요 1초도 안걸려요^^
댓글