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

C 比较不同结构数组中的两个元素?,c,io,set,C,Io,Set,我有两个文件,cars.txt和reservation.txt,这两个文件都有共同的resID 我希望用户输入日期,使用该日期查看不可用的车辆,然后打印它们(通过resID) car.txt: (从左到右:reservationID,carID,carYOM,carMake,carModel,汽车燃料,分类) reservation.txt: (从左到右:reservationID,customerID,reservationStartDate,reservationStartTime,rese

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

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

car.txt: (从左到右:
reservationID
carID
carYOM
carMake
carModel
汽车燃料
分类

reservation.txt: (从左到右:
reservationID
customerID
reservationStartDate
reservationStartTime
reservationEndDate
reservationEndTime

有关守则:

#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);
}
#包括
#包括
#定义最大车100
#定义最大分辨率100
int main(){
typedef结构{//car结构
字符保留id[20];
charcarid[20];
半石竹[20];
char-carMake[20];
char-carModel[50];
煤焦燃料[20];
煤焦分类[20];
}汽车;
typedef结构{//res结构
字符保留id[20];
char customerID[20];
字符保留起始日期[20];
charreservationstarttime[20];
char reservationEndDate[50];
charreservationendtime[20];
}资源;
car_t car[MAX_car];//car数组
res_t reservation[MAX_res];//res数组
文件*carHandle;
文件*resHandle;
字符行[100];
字符*项目;
整数重计数=0;
int carcount=0;
int k;
int i;
int选项;
字符选择[20];
resHandle=fopen(“reservation.txt”、“r”);
while(fgets(第99行,resHandle)){
//逐行剪切保留文件并将位放入res数组。
项目=strtok(第“;”行);
strcpy(保留[重新计数]。保留ID,项目);
item=strtok(空,“;”);
strcpy(保留[重新计数]。客户ID,项目);
item=strtok(空,“;”);
strcpy(保留[重新计数]。保留开始日期,项目);
item=strtok(空,“;”);
strcpy(保留[重新计数]。保留开始时间,项目);
item=strtok(空,“;”);
strcpy(保留[重新计数]。保留结束日期,项目);
item=strtok(空,“\n”);
strcpy(保留[重新计数]。保留结束时间,项目);
重新计数++;
}
fclose(resHandle);
carHandle=fopen(“car.txt”,“r”);
而(fgets(第99行,车把)){
//将汽车文件一行一行地切碎,并将位放入汽车阵列中。
项目=strtok(第“;”行);
strcpy(车[carcount]。预订ID,项目);
item=strtok(空,“;”);
strcpy(车辆[车辆计数]。车辆,项目);
item=strtok(空,“;”);
strcpy(car[carcount]。carYOM,item);
item=strtok(空,“;”);
strcpy(汽车[carcount].carMake,项目);
item=strtok(空,“;”);
strcpy(汽车[carcount]。汽车模型,项目);
item=strtok(空,“;”);
strcpy(汽车[汽车计数]。汽车燃料,项目);
item=strtok(空,“\n”);
strcpy(车[carcount]。类别,项目);
carcount++;
}
fclose(carHandle);
printf(“输入今天的日期(YYYY/MM/DD格式):”;
scanf(“%s”,选项);
对于(k=0;k=0&&strcmp(选项,保留[k]。保留开始日期)>=0){

对于(i=0;i,您的问题是您只测试第一个预订

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

另请注意,循环控制应具有(k=0;kWhy不仅仅是使用
grep
cut
?是的,这是家庭作业。但是我在这方面非常努力,我在一个特定的部分上遇到了困难,我需要一些指导。我提供了示例代码,给出了意想不到的结果,显示了它的工作输入值,并将问题缩小到一个IF语句。示例请多体谅那些不知道如何在不费吹灰之力的情况下写出数百个完美代码的人。请多体谅那些回答“谢谢你”的人。@wildplasser,我需要用我来循环第二个循环?我不太清楚你在这里的意思。谢谢!这就是问题所在。一个break语句怎么能给你的整个计划打电话。再次感谢你的帮助。
#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);
}
for (k = 0; k < rescount; k++) {
    if () {
    } else {
    }
    break;
}