这是我的 C 代码:
int main()
{
int a;
for (int i = 0; i < 3; i++)
scanf("%d ", &a);
return 0;
}
当我输入1 2 3
之类的东西时,它会要求我输入更多,我需要输入的不是' '。
但是,当我将其更改为(或其他不是 ' '
的东西)
scanf("%d !", &a);
并输入1! 2! 3!
,它不会要求更多的输入。
最佳答案
scanf("%d ", &a);
中的最后一个空格指示 scanf
消耗数字后面的所有空格。它将继续从 stdin
读取数据,直到您键入非空格的内容。以这种方式简化格式:
scanf("%d", &a);
scanf
仍然会忽略数字前的空格。
相反,格式 "%d !"
会占用数字后面的所有空格和单个 !
。当它得到这个字符或它留在输入流中的另一个非空格字符时,它会停止扫描。您无法从返回值判断它是否与 !
匹配。
scanf
非常笨拙,很难正确使用它。通常最好使用 fgets()
读取一行输入并使用 sscanf()
或更简单的函数(例如 strtol()
)解析它>、strspn()
或 strcspn()
。
关于c - 在 for 循环中使用 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117773/