如何避免用户输入过来,使用两个scanf?

时间:2016-10-09 02:54:16

标签: c scanf

我是c的新手,我不确定如何说出这个问题。但是例如使用这段代码:

#include <stdio.h>

int main()
{
    int x,y,z;

    printf("Enter 2 numbers: ");
    scanf("%d %d", &x, &y);

    printf("Test: ");
    scanf("%d",&z);

    printf("x:%d y:%d z:%d\n",x,y,z);

    return 0;
}

如果用户输入“1 2 3”,则设置x = 1,y = 2和z = 3。我想知道你是否可以设置x = 1和y = 2并忽略3,那么用户可以输入另一个值而不使用之前给出的3。

1 个答案:

答案 0 :(得分:0)

此代码可以帮助您:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int x,y,z;
    char s[1024];

    printf("Enter 2 numbers: ");
    scanf("%d %d", &x, &y);
    fgets(s, 1024, stdin);

    printf("Test: ");
    scanf("%d",&z);

    printf("x:%d y:%d z:%d\n",x,y,z);

    return 0;
}

它用1024 bytes初始化一个字符串指针,在读完前两个整数后忽略该行的剩余内容,然后提示Test:并读取z变量。

编辑使用以下代码,因为我使用0 <= lentgh <= 8.1k characaters行测试了它!

#include <stdio.h>
#include <stdlib.h>

int main() {
    int x,y,z;
    char ch;

    printf("Enter 2 numbers: ");
    scanf("%d %d", &x, &y);
    while(scanf("%c", &ch)) if(ch == '\n') break;

    printf("Test: ");
    scanf("%d",&z);

    printf("x:%d y:%d z:%d\n",x,y,z);

    return 0;
}