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更合适。也许这个问题应该简单一点。谢谢你,我从来没有这样做过,我只是想知道原因。