gpt4 book ai didi

比较不同结构数组中的两个元素?

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:56 25 4
gpt4 key购买 nike

我有两个文件,cars.txtreservation.txt,这两个文件都有共同的 resID

我希望用户输入一个日期,使用该日期查看不可用的汽车,然后打印它们(通过resID)。

汽车.txt:(从左到右:reservationIDcarIDcarYOMcarMakecarModel , carFuel, catagory.)

R001;V001;2003;Toyota;Camry;Petrol;Budget
R002;V002;2005;Toyota;Prius;Petrol;Economy
R003;V003;1999;Ford;Falcon;Petrol;Midsize
R004;V004;2007;Ford;Territory;Diesel;Fullsize
R005;V005;2010;Ferrari;599;Petrol;Fullsize
R006;V006;1998;Holden;Comadore;Diesel;Midsize
R007;V007;2008;Honda;Civic;Petrol;Budget
R008;V008;2000;Mazda;MX5;Petrol;Economy

预订.txt:(从左到右:reservationIDcustomerIDreservationStartDatereservationStartTimereservationEndDate , reservationEndTime.)

R001;C005;2012/02/12;09:15A.M;2012/03/15;05:00P.M
R002;C002;2012/04/15;10:00A.M;2012/04/22;10:30A.M
R003;C003;2012/01/16;02:11P.M;2012/04/15;12:00P.M
R004;C004;2012/05/05;03:00P.M;2012/05/08;10:40A.M
R005;C005;2012/05/15;10:00A.M;2012/04/23;05:00P.M
R006;C006;2012/04/11;05:30P.M;2012/04/15;10:00A.M
R007;C008;2012/05/15;03:15P.M;2012/05/18;11:00A.M
R008;C007;2012/04/15;11:40P.M;2012/04/23;09:00A.M

有问题的代码:

#include <stdio.h>
#include <string.h>
#define MAX_CAR 100
#define MAX_RES 100

int main(){

typedef struct{ //car struct
char reservationID[20];
char carID[20];
char carYOM[20];
char carMake[20];
char carModel[50];
char carFuel[20];
char catagory[20];
} car_t;

typedef struct{ //res struct
char reservationID[20];
char customerID[20];
char reservationStartDate[20];
char reservationStartTime[20];
char reservationEndDate[50];
char reservationEndTime[20];
} res_t;

car_t car[MAX_CAR]; //car array
res_t reservation[MAX_RES]; //res array
FILE *carHandle;
FILE *resHandle;
char line[100];
char *item;
int rescount = 0;
int carcount =0;
int k;
int i;
int option;
char choice[20];

resHandle = fopen("reservation.txt","r");

while (fgets(line, 99, resHandle)){
//cut up the reservation file line by line and put the bits into the res array.
item = strtok(line,";");
strcpy(reservation[rescount].reservationID,item);
item = strtok(NULL,";");
strcpy(reservation[rescount].customerID,item);
item = strtok(NULL,";");
strcpy(reservation[rescount].reservationStartDate,item);
item = strtok(NULL,";");
strcpy(reservation[rescount].reservationStartTime,item);
item = strtok(NULL,";");
strcpy(reservation[rescount].reservationEndDate,item);
item = strtok(NULL,"\n");
strcpy(reservation[rescount].reservationEndTime,item);
rescount++;
}

fclose(resHandle);

carHandle = fopen("car.txt","r");

while (fgets(line, 99, carHandle)){
//cut up the car file line by line and put the bits into the car array.
item = strtok(line,";");
strcpy(car[carcount].reservationID,item);
item = strtok(NULL,";");
strcpy(car[carcount].carID,item);
item = strtok(NULL,";");
strcpy(car[carcount].carYOM,item);
item = strtok(NULL,";");
strcpy(car[carcount].carMake,item);
item = strtok(NULL,";");
strcpy(car[carcount].carModel,item);
item = strtok(NULL,";");
strcpy(car[carcount].carFuel,item);
item = strtok(NULL,"\n");
strcpy(car[carcount].catagory,item);
carcount++;
}

fclose(carHandle);

printf("Enter todays date (in YYYY/MM/DD format):");
scanf("%s", choice);
for (k=0;k<=rescount; k++){
if (strcmp(choice,reservation[k].reservationStartDate)>=0 && strcmp(choice,reservation[k].reservationStartDate)>=0){
for (i=0;i<=carcount; i++){
if (strcmp(car[i].reservationID,reservation[i].reservationID)==0){
printf("\nreservationID: %s\nreservationStartTime: %s\ncustomerID: %s\ncarid: %s\nyom: %s\nmake: %s\nmodel: %s\nfueltype: %s\ncategory: %s\n\n", car[k].reservationID, reservation[i].reservationStartTime, reservation[i].customerID, car[k].carID, car[k].carYOM, car[k].carMake, car[k].carModel, car[k].carFuel, car[k].catagory);
goto outofloop;
}
}
}else printf("\nall the cars are available\n");
break;
}
outofloop:

return(0);
}

目前该代码仅适用于输入字符串“2012/02/12”至“2012/03/15”(即预订文件的第一行)

任何其他输入字符串都不会通过第一个 if 语句。

如有任何帮助,我们将不胜感激!

最佳答案

您的问题是您只测试了第一个预订。

for (k = 0; k < rescount; k++) {
if () {
} else {
}
break;
}

还要注意循环控制应该有 <只有(如上面的代码),而不是 <=如您的代码所示。

关于比较不同结构数组中的两个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com