0
私はCを使っていて、以下のコードを書いています。スペースで文字列を入力すると、プログラムはすべての入力を受け取りますが、異なる時間に1つの単語として入力されたかのように出力します。私はscanfが最初の空白文字に遭遇し、残りを無視したときに停止したと思った。しかし、それはそうではないようです。ループ内の空白文字列にscanfを使用すると面白い動作があります
「inputWithNoSpaces」と「スペースで入力」を入力すると出力が表示されました。
私はstdinを調べようとしました。すべての入力を受け取ります。しかし、私はscanfが何をしているのか理解できませんでした。何が起きているのかを知りたい。
コード:
#include <stdio.h>
int main()
{
int i=0;
char word[64]="";
while(1)
{
printf("enter string:");
scanf("%s",word);
i++;
printf("%d:%s\n\n",i,word);
}
return 0;
}
出力:
enter string:inputWithNoSpaces
1:inputWithNoSpaces
enter string:input with spaces
2:input
enter string:3:with
enter string:4:spaces
enter string:
文字列に 'scanf'を使用しないでください。' fgets'を使用してください。 –
stdioは入力行全体をバッファリングすることに注意してください。 Scanfはキーボードからの読み取りは行いません。そのバッファから読み込みます。 –