在do..while循环

时间:2017-01-26 14:19:08

标签: c string break continue

具体来说,我想引入6个区的不同车,这些区在开始时宣布。该程序问我在哪个区域开车,如果输入相同,我会继续关于车的细节,如果没有,我想回到区读。我的问题是当我读到第一个区域时,该程序工作正常并返回区读,但在第二个,不再工作了。我将附上上面的代码。我需要提一下,这是我第一次使用'continue'和'break'语句,我认为这是主要问题。谢谢!

#include <stdio.h>
#include <string.h>

typedef struct record {
    char name[15];
    int year[4];
    char serial[15];
    char owner[24];
    char plate[12];
};

int main() {
    struct record rec[100];
    char search[20];
    int imax=0;
    int i=0,j=0;
    char n;
    char* district[]=     {"Rahova","Giulesti","Crangasi","Militari","Pantelimon","Ferentari"};
    char district_input[20];


printf("\nEnter the cars: ");
do {
    printf("\nCar's number %d -> Enter district: ",i+1);
    scanf("%s",district_input);
    for (;j<=5;j++) {
        if(strcmp(district_input,district[j])==0){
            printf("\t\t    ->Name of the car: ");
            scanf("%s",rec[i].name);
            printf("\t\t    ->Release year: ");
            scanf("%d",rec[i].year);
            printf("\t\t    ->Serial number: ");
            scanf("%s",rec[i].serial);
            printf("\t\t    ->Number plate: ");
            scanf("%s",rec[i].plate);
            printf("\t\t    ->Last 3 owners: ");
            scanf("%s",rec[i].owner);
            printf("\nAdd more? [y/n]\t");
            i++;
            imax++;
            break;
        } 
        continue;
    }
    printf("\nAdd more? [y/n]\t");
} while ((n=getche()) != 'n');

}

1 个答案:

答案 0 :(得分:1)

breakcontinue不按照您的想法行事。它们仅适用于写入它们的最内层循环。在这种情况下for循环。它们与外部while循环无关。

因此例如

for (;j<=5;j++) {
  ...
  continue
}

相同
for (;j<=5;j++) {
  ...
}