我正在查詢程序中從CSV文件中搜索特定車型。 CSV文件的格式如下:在C程序中循環嵌套時遇到問題
2000,VOLVO,V70 T5 TURBO,STATION WAGON,2.3,A4,Z,12.4,8.0,2084,4793
2000,VOLVO,V70R AWD TURBO,STATION WAGON,2.4,A5,Z,13.1,9.2,2269,5219
2001,ACURA,3.2TL,MID-SIZE,3.2,AS5,Z,12.3,7.4,2019,4644
2001,ACURA,INTEGRA,SUBCOMPACT,1.8,A4,X,10.0,7.1,1739,4000
...
2014,VOLVO,XC90 AWD,SUV - STANDARD,3.2,AS6,X,13.3,8.6,2240,258
CSV的結構在下面的代碼中是CarRecord。
每年有零個或一個匹配查詢的記錄。因此,如果我在2000年的比賽中找到記錄,打印數據,並跳轉到2001年繼續搜索,如果2001年沒有記錄匹配查詢,打印出「2001年沒有記錄」,任何人都可以幫我找出我在哪裏插入我的代碼中「2001沒有記錄」?
struct CarRecord{
int year;
char make[20];
char model[40];
char type[30];
float engineSize;
char transmissionType[4];
char fuelType;
float city;
float hwy;
float fuelPerYear;
float co2;
}data[14500];
struct QueryS{
char make[20];
char model[40];
char transmissionType[4];
float engineSize;
}squery[100];
int x=0;
int ctr=0;
int compareyear=2000;
while (compareyear==data[x].year){ //assume that there are no more than 14500 records.
for(x=0;x<14500;x++){
if (strcmp(squery[ctr].make,data[x].make) == 0 && strcmp(squery[ctr].model, data[x].model) == 0 && strcmp(squery[ctr].transmissionType, data[x].transmissionType) == 0 && squery[ctr].engineSize==data[x].engineSize){
fprintf(otreport," %4d | %14.1f | %17.1f | %21.0f | %10.0f \n", data[x].year, data[x].city, data[x].hwy, data[x].fuelPerYear, data[x].co2);
compareyear++;
x++;
}
}
}
'while(compareyear == compareyear == data [x] .year)''''compareyear''似乎有點_too_。 – mah
對外部'while'使用'for'循環,並且當語句不是單行時,在循環體的周圍使用大括號。你的縮進是誤導性的; 'x ++;'縮進一層太多,而後面的第二個大括號與所示代碼中的任何開放大括號不匹配。 –