聘我网

新概念招聘3.0

scanf如何处理垃圾数据?

vote up0vote downstar
#include <stdio.h>

int main(void)
{
    int i;

    scanf("%d", &i);
    printf("i=%d\n", i);

    int j;
    scanf("%d", &j);
    printf("j=%d\n", j);

    return 0;
}

这段代码本来是想读入2个数字,但当输入123m时:

123m
i=123
j=32767

居然自动读入第二个了,如何解决这种问题?

 

1 个答复

vote up0vote downcheck

这是因为第2scanf时上一次输入剩下的m\n还在那蓄着。

每次scanf之后清下垃圾数据就好了:

void clear_stdin(void){
    char ch;
    while ( (ch=getchar()) != '\n')
        continue;
}

...
scanf("%d", &i);
...
clear_stdin();
...
scanf("%d", &j);
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.