以下のコードのループで、scanf("%[^\n]s",array)
が機能しません。それは入力を待つことなくスキップされます。しかし、%
の前のスペースで問題が解決されます。どうして?ここでscanfの[^ n]が入力を待たずにスキップされる
は間違っプログラムです。ここで
#include <string.h>
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
char arr[199];
scanf("%[^\n]s",arr);
printf("%s",arr);
}
return 0;
}
は、右のコードです:それが動作するために期待されるよう
#include <string.h>
#include <stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
char arr[199];
scanf(" %[^\n]s",arr);
printf("%s",arr);
}
return 0;
}
は、なぜそれが%
の前にスペースが必要ですか?
これはスキップする必要がある改行があるためです。最初のscanfは数字を読み込んだだけで、まだ入力に改行が残っています。ループ内のscanfsは、改行で改行を読み取ることができず、残った改行を吸収するスペースもありません。実際には、ループ内でscanf( "%s"、arr)を使用することができます。 – Shiping
これを確認してください。https://stackoverflow.com/questions/45038176/not-able-to-input-a-string-with-spaces-in-a-loop-in-c/45038767?noredirect= 1#comment77052162_45038767私は最近、答えました –