2016-11-02 11 views
-1

何らかの理由で、私がケース1を実行すると、4pmという時間が割り当てられているため、最初の3つのインスタンスで\ 0が見つかりませんでしたが、第4。私はnull文字が2次元配列でどのように動作するかについて少し混乱しています。デフォルトではすべての行に格納されていますが、追加する必要はありますか?私は名前のために5つの異なるスロットを持つ5x20配列を持っているようにしています。ありがとうございます。2d配列で ' 0'の問題

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int main() 
{ 
    int i; 
    int j; 
    int total=0; 
    int opt; 
    int time; 
    char x[5][20]; 
    char name[20]; 

    printf("----MAIN MENU----\n"); 
    printf("1: Request a lesson\n"); 
    printf("2: Cancel a lesson\n"); 
    printf("3: See available lessons\n"); 
    printf("4: List all names starting with a letter\n"); 
    printf("9: Quit\n"); 


    for(;;) 
    { 
     scanf("%d",&opt); 
     switch(opt) 
     { 
      case 1: 
       printf("please enter your name\n"); 
       scanf("%s",name); 

       //if schedule is full 
       if(total==5) 
       { 
        printf("Sorry, the teacher is too busy, try again tomorrow.\n"); 
       } 


       //opening in schedule 
       else 
        for(i=0;i<5;i++) 
         if (x[i][0]=='\0') 
         { 
          strcpy(x[i], name); 
          total++; 
          printf("You have been assigned the time %dpm\n",i+1); 
          break; 
         } 

       break; 
+6

配列は決して初期化されません... –

+0

..具体的には、有効なデータがある前に読むxです。 –

+0

nameが19文字以上で、終端文字 '\ 0'がnulの場合はどうなりますか? 'NULL'とヌルはまったく違う2つの獣です。 – t0mm13b

答えて

0

Jeff Mercadoは正しいですか。これらの配列を初期化しないと、未定義の動作が発生します。私はあなたがすでに行ったコードと一貫性を持たせるために、最初の位置にヌル文字「\ 0」を挿入することをお勧めします。