当scanf输入数据错误的时候,到底发生了什么?

buyiwangzi buyiwangzi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码先贴上来:
1 #include<stdio.h>
2 main(){
3 int array[10];
4 int temp;
5 int i,j;
6 printf("input ten numbers(between -32768 and +32767):\n");
7 for(i=0;i<10;i++){
8 scanf("%d",&temp);
9 if(temp<-32768 || temp>32767){
10 i--;
11 printf("number must between -32768 and +32767\ntry again:\n");
12 continue;
13 }else{
14 array[i]=temp;
15 }
16 }
17 printf("your numbers:\n");
18 for(j=0;j<10;j++){
19 printf(" %d ",array[j]);
20 }
21
22 printf("\ngod bye\n");
23 }

开发环境:redhatlinux9.0,编译工具是gcc
正常通过运行;
测试数据第一种情况:
input ten numbers(between -32768 and +32767):
123 322 32 121 2
32
34
4
2 4
your numbers:
123 322 32 121 2 32 34 4 2 4
god bye
测试数据第二种情况:
input ten numbers(between -32768 and +32767):
12 344 43 e
your numbers:
12 344 43 43 43 43 43 43 43 43
god bye
测试第三组数据:
input ten numbers(between -32768 and +32767):
g
进入死循环

大家帮我看看错误在哪里啊.
当使用scanf("%d",&temp);输入时 如果如数的数据不为整形出错,应该是进入下一次循环继续输入,为什么就成了那样的了.
找了一下无也没找出个原因来,望各位帮帮忙看看啊.跪谢




























...全文
评论 18
收藏 已收藏
分享
返回顶部
buyiwangzi
C语言 70,039 成员 243,237 内容