scanf( "%dn" ,&i) 的问题

problems with scanf("%d ",&i)

本文关键字:问题 scanf      更新时间:2023-10-16

对于此代码:

int i;
scanf("%dn",&i);

在输入两个数字之前,我无法停止我的程序。

我觉得这很奇怪,我知道当输入合适时,scanf会返回1。当我输入"12a'Enter'"、"12'Enter'2"等等时,这是可以的,I=12,似乎当我输入不同的int或输入'Enter'和其他东西时,scanf返回1。

我错过了什么?

"当我使用scanf("%dn",&i);时,在输入两个数字之前,我无法停止我的程序"
尽管这种格式使scanf读取数字并将其存储到i中,但这种"读取"仍在继续,直到找到后面跟着n的非空白字符为止。这就是为什么输入1 2使该scanf停止的原因。

在这种情况下,您不应该在输入格式中指定换行符。请改用scanf("%d",&i);

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

printf ("n");

它会给你一条空线。。。

scanf("%d\n",&i)

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