내가 fscanf 사용하여 파일에서 선을 읽으려고 오전() 읽기 :fscanf를 사용하여 라인()
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char c, *string[4];
int i = 0,j[4];
fp = fopen("boil.txt", "r");
c = fgetc(fp);
if(fp == NULL)
{ printf("File read error\n");
exit(0);
}
while(c != '\n')
{
fscanf(fp, "%s %d ", string[i] , &j[i]);
i++;
c = fgetc(fp);
}
for(i = 0; i < 4; i++)
{
printf("%s %d\n", string[i], j[i]);
}
}
boil.txt은 다음과 같이이다 :
boil 4 boilmilk 3 boilwater 5 heat 10
이 프로그램이 왜 분할 오류를 제공합니까?
당신은 메모리를 할당 할 필요가에서 무료로 전화하는 것을 잊지 마세요 , 당신의'문자열 [내가]'포인터는 임의의 위치를 가리 . –
fgetc와 fscanf는 모두 파일 포인터를 앞쪽으로 이동하므로주의해야합니다. 원하는 문자를 가져 오지 못할 수도 있습니다. – crlanglois
1) 오류 검사 2)'fgetc'은 좋은 이유로'char'가 아니라'int'를 반환합니다. 3) 할당 된 공간이 없습니다. 4) 등 5) [ask]를 보라. – Olaf