※요약

fscanf : 개방된 파일에서 변수 단위로 입력을 받는다.



※특징

변수 간의 구분은 공백, 탭, 개행 문자로 한다.

*는 값을 읽지 않고 건너뛸 때 사용한다.

파일 포인터는 자동으로 증가한다.



※함수 원형 및 설명

int fscanf( FILE *stream, const char *format [, argument].. );
//stream : 개방된 FILE 구조체의 포인터
//format : 형식 제어 문자열
//argument : 가변적인 매개변수
//반환값 : 읽혀진 필드의 수. 파일 끝 또는 에러 시 EOF(-1)



※예제


읽을 파일 Text.txt


#include <stdio.h>

int main( )
{	
	FILE *pFile = NULL;

	pFile = fopen( "d:\\Text.txt", "r" );
	if( pFile == NULL )
	{
		//에러 처리
	}
	else
	{
		int nCount;
		float fRatio;
		char strDesc[255];

		while( !feof( pFile ) )
		{
			//공백으로 분리된 파일 읽기
			fscanf( pFile, "%d %f %s\n", &nCount, &fRatio, strDesc );
			printf( "공백으로 분리 : %d %f %s\n", nCount, fRatio, strDesc );
			
			//,로 분리된 파일 읽기
			fscanf( pFile, "%d, %f, %s\n", &nCount, &fRatio, strDesc );
			printf( ",로 분리 : %d, %f, %s\n", nCount, fRatio, strDesc );

			//탭으로 분리된 파일 읽기
			fscanf( pFile, "%d\t%f\t%s\n", &nCount, &fRatio, strDesc );
			printf( "탭으로 분리 : %d\t%f\t%s\n", nCount, fRatio, strDesc );

			//선별적으로 읽기 - [%*]을 사용하면 값을 읽지 않는다.
			fscanf( pFile, "%*d %*f %s\n", strDesc );
			printf( "선별적으로 읽기 : %s\n", strDesc );
		}

		fclose( pFile );
	}

	return 0;
}


+ Recent posts