配列は1ではなくゼロで始まるので、私はこれを補うためにカウンタ(i)に1を加えていることをコードで明確にしたいと思います。しかし、私の機能は私の現在のものを読んでいない。配列を扱う際に+1をどこに追加しますか?
私はコーディングでは新しいので謝罪しますが、私は質問に答えます。
do
{
printf("\nMax # of characters?\n");
fflush(stdin);
scanf("%d", &x);
} while (x < 1 || x > 200);
do
{
printf("\nEnter Text:\n");
enter[i] = getchar();
i = 1;
error = 0;
do
{
printf("i = %d\n", (i - 1));
c = getchar();
enter[i] = c;
i++;
} while (c != '\n');
if (i > (x + 1)) //<----------- Even though I added one because arrays start at [0]
{ // the program still tells me 'i' (counter) is one
// more than it should be
printf("Words must not be longer than %d letters\n", x);
printf("You entered %d letters\n", (i - 1)); // -1 to count for the '\n'
error = 1;
}
} while (error != 0);
printf("\nOutput: %s\n", enter);
return 0;
Cは0ベースの配列を使用しているため、コードには常にその値が反映されている必要があります。あなたが「1を追加する」ために必要な唯一の場所は、UIの中にあります。したがって、printfはI + 1&x + 1です。 – Neil
有効な 'ì'の条件は' i
'fflush(stdin)'は、標準では明示的に未定義の動作です(実装によってはサポートされていますが、移植性がありません)。入力ストリームを消去しようとしている場合は、他の方法もあります。 –