c语言中数据输入错误了如何提示输入错误并实现要求重新输入 5

main(){intm;inti,a;charc[N][M];char*p[N];*p=NULL;while(1){m=Menu();do{getchar();}whil... main()
{
int m;
int i,a;
char c[N][M];
char *p[N];
*p=NULL;
while(1)
{
m=Menu();
do
{
getchar();
}while(m==0);
switch (m)
{
case 1:
printf("请输入要输入字符串的个数:");
scanf("%d",&a);

////就是这里,如果a输入不符合,那么怎么才能返回,并重新输入a
getchar();
in(a,c,p);
break;
展开
 我来答
娱乐小八卦啊a
高粉答主

2020-05-21 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117853

向TA提问 私信TA
展开全部

可以使用清理输入流fflush(stdin);这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环。

但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符。但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。

所以可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以可以让其接收一个终止条件,每次输入完都会按回车,那就让其接收'\n'换行符终止自己的循环。

扩展资料

C语言从键盘输入数据

程序是人机交互的媒介,有输出必然也有输入。在C语言中,有多个函数可以从键盘获得用户输入:

scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。

getchar()、getche()、getch():这三个函数都用于输入单个字符。

gets():获取一行数据,并作为字符串处理。

scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入。

gets() 会读取用户输入的整行内容,包括空格。而 scanf() 遇到空格就结束读取,也就是说,使用 scanf() 读取的字符串中永远不会包含空格。

风若远去何人留
推荐于2017-09-20 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450129
专业C/C++软件开发

向TA提问 私信TA
展开全部

数据输入错误,有两种情况:

1 输入的数据格式不正确,比如要求输入整型,但是输入了字符型。

这种情况,可以通过scanf的返回值进行判断,scanf的返回值是正确输入的变量个数。当返回值和要输入的变量个数不同时,则表示出错,要求重新输入。

2 输入的数据不在合法范围内。

比如要求输入正数,但输入了负数。这时需要判断输入的值是否合法。


以输入两个整数,要求范围在0~100之间的代码可以写作

int a,b,r;
while(1)//死循环,不得到正确输入不退出。
{
    r = scanf("%d%d",&a,&b);
    if(r == 2 && (a>=0 && a <= 100) && (b>=0 && b<=100)) break;//输入正确,退出循环。
    printf("输入不正确,请重新输入\n");
    fflush(stdin);//清空输入,这一步是必须的,不然出错的输入可能影响下次输入。
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网络工程菜鸟
2015-09-14 · TA获得超过209个赞
知道答主
回答量:228
采纳率:0%
帮助的人:101万
展开全部
这个用if else语句即可,先设定好输入数据范围,当输入后进行判断,如果在范围内,就不提示出错,如果不在范围内,就提示出错,并重新输入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglui1990
2011-05-25 · TA获得超过125个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:117万
展开全部
..........
.........
int a; //接受输入的值
a= getchar();
while(c!=约定值)
{
printf("输入错误,请从新输入");
a= getchar();
}
...
....
追问
输入是数据是整型的!!
追答
那就改下嘛
..........
.........
int a; //接受输入的值
printf("请输入%d",a);
while(a!=约定值)
{
printf("输入错误,请从新输入:%d",a);
}
...
....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kemooboy
2011-05-25 · 超过25用户采纳过TA的回答
知道答主
回答量:82
采纳率:100%
帮助的人:29.2万
展开全部
printf ("wrong number.try again!");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式