我正在读整数scanf
,同时检查scanf
的scanf
读数位数,第一个输出总是正确的,但之后输出又增加了一个。即scanf
为第二个scanf
读取最后的"\n"
。scanf%n给出错误的输出
我知道这种问题scanf
和char
是scanf("%c",&cval)
--->到scanf(" %c",&cval)
留下一些小的空间,以避免scanf函数读取行的末尾。但整数是什么?
我已经看到了一些问题,在这里Link here,他们都似乎认为scanf()
是"retarted"
和fget()应始终使用..真有那么和它的好处是避免它的项目?我的意思是使所有这类错误无效,并且有办法阻止这种情况发生。 我必须为此使用fget()
还是有办法在scanf()
中修复此问题。欢迎所有评论,并感谢您的时间。我只想知道是否有办法解决它,我知道如何使用%n。
#include <stdio.h>
int main(void) {
int i =0 ,byte_count = 0,val;
printf("Enter a number: ");
scanf("%d%n",&val,&byte_count);
while (i < 3){
printf("byte count is: %d\n",byte_count);
scanf("%d%n",&val,&byte_count);
i++;
}
return 0;
}
也许与复制[什么是n的'sscanf的代表(S,“%d%N”,&I,N)'?](http://stackoverflow.com/questions/13199693/what -does-the-n-stand-for-in-sscanfs-dnin) –
@ J.Piquard我没有说我不知道“%n”代表什么,当然也不是重复。我知道%n做了什么。 –
首先你可以检查'scanf()'的返回值是否等于2。 –