2017-01-26 26 views
0

Конкретно, я хочу представить различные автомобили с 6 районами, которые объявлены в начале. Программа спросит меня, в каком округе есть автомобиль, и если вход будет таким же, я продолжу детали автомобиля, если нет, я хочу вернуться в районное чтение. Моя проблема в том, когда я читаю первый квартал по-разному, программа отлично работает и возвращается к чтению в округе, но на втором не работает. Я приложу код выше. Я должен упомянуть, что это первый случай, когда я использую оператор «continue» и «break», и я думаю, что это основная проблема. Благодаря !Продолжить и нарушить операторную ошибку в цикле do..while

#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'); 

} 
+3

Параметр 'continue' в конце цикла' for' не имеет никакого эффекта. Не уверен, что не ясно; прочитайте о двух утверждениях в своей книге C. – Olaf

ответ

1

break и continue не делать то, что вы думаете, что они делают. Они применяются только к внутренней петле, внутри которой они написаны. В этом случае цикл for. Они не имеют никакого отношения к внешнему циклу.

Так, например

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

идентичен

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

Я подумал (и я понял из sintaxe), что если я поставлю оператор 'break' in if, цикл for будет заканчиваться и перезагружаться каждый раз, когда я достигаю вход frist –

 Смежные вопросы

  • Нет связанных вопросов^_^