2017-01-26 17 views
0

具体的には、最初から宣言されている6つの地区で異なる車を紹介したいと思います。プログラムは、どの地区が車に近づくのかを聞いてきます。入力が同じであれば、車の詳細を続行します。そうでなければ、私は地区の読書に戻ってきます。私の問題は、最初の地区を中心に読むと、プログラムはうまくいき、地区の読書に戻りますが、もう1つでは、もう働いていません。私は上記のコードを添付します。私は '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

と同一です。何が明確でないか分からない。あなたのC本の中の2つのステートメントについて読んでください。 – Olaf

答えて

1

breakcontinueあなたは彼らが何を考えて行いません。それらは、それらが書かれている最も内側のループにのみ適用されます。この場合はforループです。彼らは外側whileループとは関係がありません。例えばこのよう

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

は `for`ループの終わりに` continue`は影響を及ぼさない

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

私はif文で 'break'を置くと、forループが終了し、frist入力に達するたびにリロードすると(私はsintaxeから理解しました) –

関連する問題