gpt4 book ai didi

c - 当用户输入 char 而不是预期的 int 时提示错误

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

我正在制作一个列出选项 1-3 的菜单。用户应输入一个整数。

scanf("%d", &select_option)

当用户输入字符(例如“a”或长字符串的“asd”,或“1a2”之类的混合字符)而不是预期的 int 时,如何提示错误?谢谢。

注意:当用户输入诸如“a”、“asd”之类的“字符”时,代码会因某种原因进入无限循环。

这是我的程序(最小示例):

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

int main(void)
{
printf("Favourite sports? \n");
printf("1. Tennis\n");
printf("2. Badminton\n");
printf("3. Basketball\n");
printf("4. Exit program.\n");
printf("Enter your choice (1-4): ");
scanf("%d", &select_option);

while(select_option != 4)
{
switch(select_option)
{
case 1:
printf("You like tennis! Nice! \n");
break;

case 2:
printf("You like badminton! Nice!");
break;

case 3:
printf("You like basketball! Nice!");
break;

default:
system("clear");
printf("Invalid option. Please re-enter your choice (1-4).\n");

}//end switch

printf("Favourite sports? \n");
printf("1. Tennis\n");
printf("2. Badminton\n");
printf("3. Basketball\n");
printf("4. Exit program.\n");
printf("Enter your choice (1-4): ");
scanf("%d", &select_option);

}//end while
}//end main

最佳答案

可以这样做:

#include <stdio.h>

int main(void) {
int v;
int ret = scanf("%d", &v);
if(ret == 1)
printf("OK, %d\n", v);
else
printf("Something went wrong!\n");
return 0;
}

我利用了 scanf() 的返回值,并基于该值做出了假设。这对于“1a2”的情况会失败,但对于“12”和“a”会成功。

但是,这是一个宽泛的问题,我个人的做法是:

  1. 使用fgets()阅读输入。
  2. 丢弃换行符。
  3. 将字符串转换为整数(例如 strtol())。
  4. Validate input .

关于c - 当用户输入 char 而不是预期的 int 时提示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44798899/

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