gpt4 book ai didi

c - 如何使用两个scanf避免用户输入越界?

转载 作者:行者123 更新时间:2023-11-30 16:56:21 24 4
gpt4 key购买 nike

我是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。

最佳答案

此代码将帮助您:

#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;
}

关于c - 如何使用两个scanf避免用户输入越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com