gpt4 book ai didi

c - 当需要整数输入时处理 "non-numerical characters"

转载 作者:行者123 更新时间:2023-11-30 17:42:42 25 4
gpt4 key购买 nike

我需要以下函数的帮助,它需要一个整数输入;当我插入“F”(非数字字符)之类的内容时,程序会卡住,它不会显示任何输出或让我插入更多输入。如何解决这个问题?

int input_legality(int game_board[FIELD_ROWS][FIELD_COLS])
{
int input=0;
while(1)
{
if(scanf("%d", &input)==1)
{
if(input==DOWN || input==LEFT || input==RIGHT || input==UP)
{
return input;
}
else
if(input==EXIT)
{
printf("\n program exited by user \n");
return 1;
}
else
if(input==PRINT)
{
printField(game_board);
continue;
}
else
{
fprintf(stderr,"your step is undefined, please try another one\n");
continue;
}
}
}
return 0;
}

最佳答案

如果 scanf() 没有读取整数,则“F”似乎会留在标准输入中。一种答案是如果未检测到整数则扫描字符串...

尝试添加类似的内容

char bla[256];
scanf("%s",bla);

在 while 循环结束时(或者在 scanf("%d) 失败的情况下)

这是一个基本的“主要”代码:

#include <stdio.h>

#define DOWN 0
#define UP 1
#define LEFT 2
#define RIGHT 3

#define EXIT 4
#define PRINT 5
int input_legality()
{
int input=0;
while(1)
{
if(scanf("%d", &input)==1)
{


if(input==DOWN || input==LEFT || input==RIGHT || input==UP)
{
return input;
}

else{
if(input==EXIT)
{
printf("\n program exited by user \n");
return 1;
}
else{
if(input==PRINT)
{
printf("ble %d \n",input);
continue;
}
else
{
fprintf(stderr,"your step is undefined, please try another one\n");
continue;
}
}
}
}
//while(getchar() != EOF);

//fflush(stdin);
char bla[256];
scanf("%s", bla);

}
return 0;
}

int main ( int argc , char * argv [] )
{
int i;
for(i=0;i<42;i++){
input_legality();
}
return 0;
}

这个 scanf 是最简单的方法:其他的方法可能会更好。使用 switch-case 可以使代码更加清晰。再见,

弗朗西斯

关于c - 当需要整数输入时处理 "non-numerical characters",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20443020/

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