初め; コードを正しくインデントします (Linux では、GNU インデントユーティリティまたはastyleを使用できます)。
すべての警告とデバッグ情報を含めてコンパイルします (例: gcc -Wall -g
)。デバッガー ( gdb
) を使用してステップごとに実行する方法を学びます。
次に、あなたscanf("%s", str);
は危険です (少なくとも である必要があります。scanf(3)scanf("%99s", str);
を参照してください) ! ユーザーが 200 文字の非常に長い「単語」 (たとえば、数字の 200 倍) を入力すると、クラッシュまたは未定義の動作が発生する可能性があります。また、スペースまたは空白のような文字まで読み取ることに注意してください。バッファを読み取る前にゼロにするのは良い習慣だと思います。だからあなたを0
%s
scanf
memset (str, 0, sizeof(str));
fgets (str, sizeof(str), stdin);
最後に、バッファリングされ stdout
た出力をフラッシュしていません ( stdio(3)、setvbuf(3)、fflush(3)などを参照してください...)。たぶん試してみてください
while(str[i])
printf("%d ",str[i++]);
putchar('\n');
fflush(stdout);
への最後の呼び出しfflush
はここでは役に立ちませんが、それは良い習慣です (または、すべて printf
のフォーマット文字列を改行で\n
終わらせるstdout
ことがよくありますが、常に行バッファリングされるわけではありません!)