2017-12-01 12 views
0

コード実行時にキーボードから値を入力する際に​​問題があります。すべてが正常にコンパイルが、私は自分のコードを実行するために行くとき、それは次のように出力します:印刷機能で最初の値を入力できない

How many numbers would you like to place in the array: 7 
Enter number 1: Enter number 2: 

など、など

ですが、なぜでしょうか?また、各要素が配列内にある回数を数えて格納する方法はありますか?

int j = 0; 
char numStorage[j]; 

int main(void) 
{ 

    int numbers = 0; 
    int j = 0; 
    char numStorage[j]; 
    int times = 0; 
    char newArray[j]; 

    printf("How many numbers would you like to place in the array: "); 
    scanf("%d", &numbers); 

    j = numbers; 

    int i = 1; 

    while (i < (numbers + 1)) 
    { 
     printf("Enter number %d: ", i); 
     scanf("%c", &numStorage[i]); 
     i++; 
    }//close of while loop 

    int x; 

    for (x = 0; x < numbers; x++) 
    { 
     newArray[x] = numStorage[x]; 
    }//close of for loop 

    int z; 
    int q; 

    for (z = 0; z < numbers; z++) 
    { 
     for (q = 0; q < numbers; q++) 
     { 
      if (numStorage[z] == numStorage[q]) 
      { 
       times++; 
       q++; 
      }//close of if 
      else 
      { 
       q++; 
      }//close of else 
     }//close of for loop 

     printf("\n%d occurs %d times", numStorage[z], times); 
     z++; 
     q = 0; 
     times = 0; 
    }//close of for loop 

}//end of main method 

答えて

2

あなたはゼロ要素を持つ文字の配列としてnumStorage宣言する。その後

int i=1; 
while (i < (numbers + 1)) 
    { 
     printf("Enter number %d: ", i); 
     scanf("%c", &numStorage[i]); 
     .. 
    } 

にあなたはバインドされたアクセスのうち、明らかにnumStorage[1]に文字を割り当てるしようとしています。

それはあなただけで(再びscanfを使用して)数字を読んでも問題であり、あなたが[ this ]をチェックする必要がありました後scanfを使用して

j = numbers; 
char numStorage[j]; 
... 
int i=0; 
    while (i < numbers) # Array indices should be 0 to numbers-1 

編集

読む文字されている必要があります回避策の質問。

+1

これも問題ですが、主な問題は、改行が数字の後ろに残っているため、入力を待たずに最初の '"%c "'が改行を取得することです。 –

+0

@JonathanLefflerよろしくお願いします。私はその点を見落とした.. – sjsam

関連する問題