gpt4 book ai didi

c - 如何防止用户输入字符

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:25 25 4
gpt4 key购买 nike

第一次运行,它运行良好。当您输入 char

时,程序运行 最后选择的案例
int x;
do{
printf("Input a number:");
scanf("%d", &x);

switch(x){
case 1: printf("A\n\n");
break;
case 2: printf("B\n\n");
break;
case 3: printf("C\n\n");
break;
case 4: printf("End");
break;
default: printf("Invalid.\n");
}

}while(x!=4);

我该如何防止这种情况?

最佳答案

检查 scanf 的返回值,如果它没有返回 1 那么您将知道要么用户输入了格式说明符不需要的内容,要么发生了一些错误.

if(scanf("%d", &x) != 1){
fprintf(stderr,"Error occured\n");
exit(1);
}

更好的解决方案是使用 fgets 并使用 strtol 解析数字。与 scanf 相比,它将提供更多的错误处理和对整个过程的控制。

正如我所说,您还可以使用 fgets 读取一行,然后使用 sscanf 解析整数输入。稍微玩一下这个最低限度的功能,您就会明白我的意思:-

#define MAXLEN 50
int f() {
int v;
char buff[MAXLEN];
while (fgets(buff, sizeof buff, stdin)) {
if (sscanf(buff, "%d", &v) == 1 ) {
return v;
}
}
return -1;
}

关于c - 如何防止用户输入字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094591/

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