この問題を回避できません。ユーザーが文字列を入力してからEnterキーを押し、次に別の文字列を入力する必要があります。彼/彼女が終わったら、もう一度Enterキーを押します(この最後の文字列には\n文字しかないので、いつ停止するかがわかります).
char * buff = malloc (100);
printf("Type in strings, to finish hit enter\n");
do{
scanf (" %[^\n]",buff);
//do some other stuff with the string
} while(*buff);
printf("You have finished typing strings\n");
[^\n] コマンドは \n 以外のすべてを読み取るよう関数に指示しているため、\n がコンソール バッファーに保持されることを意味するため、私が思いついたこのアプローチは役に立ちません。私が単にそうするなら
while(*buff)
{
scanf ("%s",buff);
}
Enter キーを押しても何もしません。他のアプローチはありますか?