当scanf输入数据错误的时候,到底发生了什么?
代码先贴上来:
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);输入时 如果如数的数据不为整形出错,应该是进入下一次循环继续输入,为什么就成了那样的了.
找了一下无也没找出个原因来,望各位帮帮忙看看啊.跪谢
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);输入时 如果如数的数据不为整形出错,应该是进入下一次循环继续输入,为什么就成了那样的了.
找了一下无也没找出个原因来,望各位帮帮忙看看啊.跪谢
...全文
相关推荐
scanf的用法
SCANF 函数 使用方法
C语言省试题(3-基本语句)101016(ppt文档)(2).ppt
C语言省试题(3-基本语句)101016(ppt文档)(2).ppt
2021-2022计算机二级等级考试试题及答案No.1105.docx
2021-2022计算机二级等级考试试题及答案No.1105.docx
cin和scanf输入错误的处理
cin和scanf输入错误的处理:在 cin是C++中常用的标准输入函数,但是在调用此函数时也常常会遇到一些问,如对整型数组输入字符后就会发生无法用输入推出循环的情况,这需要错误处理机制
C语言中输入函数(scanf()、fgets()和gets())的区别详解
主要给大家介绍了关于C语言中三种输入函数(scanf()、fgets()和gets())区别的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。


