我正在爲一個類進行作業,並且在應用文件輸入/輸出和結構時遇到了麻煩。我有這個代碼從一個文件讀取不同的汽車,並將他們的信息複製到一個結構數組中。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
我插入打印功能到我的代碼,所以我可以看到,如果汽車正確讀取,但是當我運行該程序,這是輸出:
▒▒▒80 0 1465899048 32767
我絕對不知道爲什麼會這樣。任何人都可以幫忙嗎?
'爲(i = 0; I
BLUEPIXY
我懷疑你的scant在字段說明符之間應該有空格,例如:「%s%s%s ...「 –
您正在期待'feof'來預測未來的行動是否會成功。這不是它所做的。你不檢查'fscanf'是否成功或失敗。 –