【发布时间】:2014-04-05 20:01:18
【问题描述】:
我正在开发一个查询程序,以从 CSV 文件中搜索特定车型。 CSV文件格式如下:
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有点太感兴趣。 -
对外部
while使用for循环,并在语句不是单行时在循环体周围使用大括号。您的缩进具有误导性;x++;缩进一级太多,之后的第二个右大括号与所示代码中的任何左大括号都不匹配。
标签: c loops while-loop nest