1

jカウンターとして使用し、インクリメントと同時にインクリメントする必要がありiます。このコードは、 の乱数を与え続けjます。

    int i, j;   // counters
    for (i=0, j=1; i<=LENGTH; i++, j++)
    {
        printf("Player %i "\n", j);
        printf("Name:\t");
        fgets(name[i], MAXLENGTH, stdin);
        ...
4

3 に答える 3

4
printf("Player %i "\n", j); 

ステートメントは 2 つの二重引用符で構成されます。

printf("Player %i \n", j);  

また

printf("Player %d \n", j);   

このコードを試してください:

#define LENGTH 10
#include<stdio.h>
main()
{
    int i, j;//counters
    for (i=0, j=1; i<=LENGTH; i++, j++)
    {
        printf("Player j=%i  i=%d \n", j,i);
    }
}
于 2013-09-02T13:41:35.413 に答える
0

どうですか

  int i;//counter
  for (i=0; i<=LENGTH; i++)
  {
      printf("Player %i \n", i + 1);
      printf("Name:\t");
      fgets(name[i], MAXLENGTH, stdin);
  ...
于 2013-09-02T13:38:09.443 に答える
0

何が何であるかはわかりませんnameが、単純な文字列の場合は次のようになります。

char name[MAXLENGTH];

番目の要素から始まる文字列にfgets書き込みます。文字列の末尾を超えて書いている可能性があります。がループの直前にローカルで定義されている場合、 と の両方を「ランダムな」データで上書きできます (つまり、このサイトの同名を実行しています)。nameinamenameij

この場合は、代わりfgetsに次のように呼び出す必要があります。

fgets(name, MAXLENGTH, stdin);
于 2013-09-03T17:04:32.083 に答える