SPRING :: NOTE

[C] 파일을 읽어와 구조체에 담기 본문

Development Language/C · C++ · MFC

[C] 파일을 읽어와 구조체에 담기

RAYZIE 2016. 5. 3. 15:39
반응형

일단 다음과같은 *.txt 파일 혹은 *.csv 파일이 있다 가정하자.

18-Dec-2013
TEST Data Total Col:150
0,18-Apr-2016 00:00:00.000000,10
1,18-Apr-2013 00:00:01.000000,20
.
.
.
.
149,18-Apr-2013 00:00:01.000000,99
헤더파일에 구조체 생성
typedef struct TEST_DATA
{
	int		aa;
	char	        bb[30];
	double	cc;
}testData;
구조체 배열 300개 생성
testData tData[300];
본문에 코드 작성
FILE *pFile;
char *pStr;
char strTmp[255];
char* token;
int cnt = 0, colCnt = 0;
int i;
pFile = fopen("a.csv", "rb");		// 파일명 불러오기
if (pFile != NULL)
{
	while (!feof(pFile))
	{
		pStr = fgets(strTmp, sizeof(strTmp), pFile);
			
		if (colCnt >= 2)
		{
			if (pStr == NULL) break;		// NULL이면 루프를 빠져나간다.
			// 자료의 두번째 문자열 중 공백이 있으므로 sscanf가 죽는다. 이럴때 정규화식 :: %[^,]
			sscanf(pStr, "%d,%[^,],%lf\n",    
				&tData[cnt].aa,
				&tData[cnt].bb,
				&dData[cnt].cc
				);
				cnt++;
		}
		else
			colCnt++;
	}
	fclose(pFile);
}
else
{
	printf("fail");
}
반응형
Comments