[C언어] 변수 단위 파일 읽기 함수 - fscanf


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

※특징
변수 간의 구분은 공백, 탭, 개행 문자로 한다.
*는 값을 읽지 않고 건너뛸 때 사용한다.
파일 포인터는 자동으로 증가한다.

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

#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", &nCount, &fRatio, strDesc );
printf( "공백으로 분리 : %d %f %s\n", nCount, fRatio, strDesc );

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

//탭으로 분리된 파일 읽기
fscanf( pFile, "%d\t%f\t%s", &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