Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ scanf的问题(“d\n”、“i”)_C++_C_Format_Scanf_Formatted Input - Fatal编程技术网

C++ scanf的问题(“d\n”、“i”)

C++ scanf的问题(“d\n”、“i”),c++,c,format,scanf,formatted-input,C++,C,Format,Scanf,Formatted Input,对于此代码: int i; scanf("%d\n",&i); 在输入两个数字之前,我无法停止程序 我觉得很奇怪,我知道当输入合适时,scanf会返回1。 当我输入“12a‘Enter’”、“12‘Enter’2”等等时,它是ok的,I=12,似乎当我输入不同的int或输入一个‘Enter’和另一个时,scanf返回1 我遗漏了什么?“当我使用scanf(“%d\n”,&I);” 尽管此格式使scanf读取数字并将其存储到i,但此“读取”将继续,并持续到找到后跟\n的非空白字符。这就是

对于此代码:

int i;
scanf("%d\n",&i);
在输入两个数字之前,我无法停止程序

我觉得很奇怪,我知道当输入合适时,scanf会返回1。 当我输入“12a‘Enter’”、“12‘Enter’2”等等时,它是ok的,I=12,似乎当我输入不同的int或输入一个‘Enter’和另一个时,scanf返回1

我遗漏了什么?

“当我使用
scanf(“%d\n”,&I);

尽管此格式使
scanf
读取数字并将其存储到
i
,但此“读取”将继续,并持续到找到后跟
\n
的非空白字符。这就是为什么输入
12
会使该
scanf
停止的原因

在这种情况下,不应在输入格式中指定换行符。
使用
scanf(“%d”和&i)相反。

这是因为扫描中的
'\n
。。。 如果你想换一条新的路线,只需输入:

printf ("\n");
它会给你一个空行…

scanf(“%d\n”,&i)


阅读数字,直到出现非空白字符(忽略所有空白和数字后面的“\n”)。

尝试重新格式化问题。我还添加了标记,因为这两种行为相同languages@LihO虽然中提供了
scanf
,但使用
istream
s更合适。也许这个问题应该简单一点。谢谢你,我从来没有这样做过,我只是想知道原因。