C语言 如何避免用户输入越过,使用两个扫描



我是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:%dn",x,y,z);
    return 0;
}

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

以下代码将为您提供帮助:

#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:%dn",x,y,z);
    return 0;
}

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

EDIT使用下面的代码,因为我用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:%dn",x,y,z);
    return 0;
}

最新更新