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

C/파일, 디렉토리 함수2013. 11. 30. 08:54



※요약

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;
}


작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역

  • 프로필 사진
    BK
    2015.02.13 16:10

    좋은글 감사합니다~~~~

  • 프로필 사진
    aktnf
    2017.03.27 11:58

    형식제어 문자열의 \n은 왜 해주는건가요??

  • 프로필 사진
    플로랑
    2017.06.19 12:31

    파일입출력을 처음 배우고 있습니다.
    저 메모장을 어디에 저장해야 실행되는 건가요? 일단 바탕화면에 저장했는데 파일이 안열립니다..도와주세요ㅜ

  • 프로필 사진
    스테이나이트
    2017.10.10 00:17

    좋은 자료 감사합니다!