클래스에 대한 과제를 진행하고 있는데 파일 입출력 및 구조체를 함께 적용하는 데 문제가 있습니다. 파일에서 다른 자동차를 읽고 구조체 배열에 정보를 복사하는 코드가 있습니다. C 프로그램 : 파일을 읽고 구조체에 복사 하시겠습니까?
#include <stdio.h>
#define MAX_LEN 1000
#define NAME_LEN 30
struct car{
char make[NAME_LEN + 1];
char model[NAME_LEN + 1];
int year;
int cmpg;
int hmpg;
int avgmpg;
};
.
.
.
int main()
{
int i;
struct car cars[MAX_LEN];
FILE* pFile;
pFile = fopen("cars.txt", "r");
.
.
.
.
for(i = 0; i < MAX_LEN; i++)
{
while(!feof(pFile) && !ferror(pFile))
{
fscanf(pFile, "%s%s%d%d%d ", cars[i].make, cars[i].model, &cars[i].year, &cars[i].cmpg, &cars[i].hmpg);
cars[i].avgmpg = (cars[i].cmpg + cars[i].hmpg)/2;
}
}
selection_sort(cars, MAX_LEN);
FILE* outFile;
outFile = fopen("sorted_cars.txt", "w");
fprintf(outFile, "Make Model year city mpg highway mpg average mpg\n");
for(i = 0; i < MAX_LEN; i++);
{
fprintf(outFile, "%s %s %d %-2d %-10d %-12d\n", cars[i].make, cars[i].model, cars[i].year, cars[i].cmpg, cars[i].hmpg, cars[i].avgmpg);
printf("%s %s %d %d %d %d\n", cars[i].make, cars[i].model, cars[i].year, cars[i].cmpg, cars[i].hmpg, cars[i].avgmpg);
}
fclose(pFile);
fclose(outFile);
return 0;
}
이
처럼 .txt 파일이 모습입니다 : 나는 자동차가 제대로 읽는다면 내가 볼 수있는 내 코드에 인쇄 기능을 삽입Mercury Sable 2009 18 28
Jeep Wrangler 2016 17 21
Honda Civic 2015 31 41
Toyota Corolla 2015 30 42
Toyota Prius 2010 51 48
Ford Escape 2013 23 33
Ford Fusion 2013 25 37
Acura MDX 2014 20 28
Lexus RX 2013 32 28
,하지만 난 프로그램이 실행시 출력은 다음과 같습니다
▒▒▒8 0 0 1465899048 32767
내가 왜 이런 일 전혀 생각이 없다. 아무도 도와 줄 수 있니?
'에 대한 (전 = 0; i가 MAX_LEN을 <; 내가 ++) { 동안 (무엇이 일어 났는지를 결정하기 위해 feof (PFILE) && ferror 함수 (!! – BLUEPIXY
당신의 부족한 부분에 필드 지정자 사이에 공백이 있어야한다고 생각합니다 : "% s % s % s (예 :"% s % s % s " ... " –
미래 작업이 성공할지를 예측하는 'feof'를 기대하고 있습니다. 그것은 그것이하는 것이 아닙니다. 'fscanf'가 성공했는지 실패했는지는 확인하지 않습니다. –