我有以下C程序,我不理解scanf
的返回值。
#include <stdio.h>
int main()
{
int p,n1,n2;
p=scanf("%d %d",&n1, &n2);
printf("%d", p);
return 0;
}
p
被指定为scanf
的返回值
当我为n1
和n2
提供值时,p
的值始终为2.我不明白为什么值始终为2,无论我为{{1 }和n1
。
答案 0 :(得分:9)
scanf
返回读取的值的数量,在您的情况下为2。
答案 1 :(得分:3)
scanf()
返回读取的值除以外的%n
值。
“执行%n指令不会增加返回的赋值计数...”C11dr§7.21.6.2
int p,n1,n2;
int n;
p=scanf("%d%n%d",&n1, &n, &n2);
// p takes on the value of 2, not 3, should n1 and n2 successfully scan.
如果没有转化,scanf()
会返回EOF
。
“如果在第一次转换之前发生输入故障,fscanf函数将返回宏EOF的值......”
char buf[100];
int n;
while ((n = scanf(" %99[^\n]", buf)) != EOF) {
handle(buf, n);
}