关于C语言得非法输入
程序员文章站
2022-03-29 18:43:24
关于C语言得非法输入 首先我们来看看什么是非法输入 我们看到用户的非法输入给后面造成了严重的影响 控制非法输入 ......
关于c语言得非法输入
- 首先我们来看看什么是非法输入
# include<stdio.h> int main(void) { int i,j,k; char ch; printf("请进行第一次输入...\n"); scanf("%d",&i); printf("i=%d\n",i); printf("----------------\n"); printf("请进行第二次输入....\n"); scanf("%d",&j); printf("j=%d\n",j); printf("----------------\n"); printf("请进行第三次输入....\n"); scanf("%d",&k); printf("k=%d\n",k); return 0; /* ----------------vc++6.0中输出得结果----------------------- 请进行第一次输入... 123 i=123 ---------------- 请进行第二次输入.... 456 j=456 ---------------- 请进行第三次输入.... 789 k=789 ------------------------------------------------------------- 请进行第一次输入... 123.。。。。 i=123 ---------------- 请进行第二次输入.... j=-858993460 ---------------- 请进行第三次输入.... k=-858993460 ------------------------------------------------------------- 请进行第一次输入... mmmmm i=-858993460 ---------------- 请进行第二次输入.... j=-858993460 ---------------- 请进行第三次输入.... k=-858993460 ----------------------------------------------------------- 心得: 我们看到只有第一次的输入是正确的。我们先来说说为什么要使用输出控制符。 我们从终端中输入的都是字符或者字符串,例如我们输入123,在我们看来是数字,但是在计算机看来就是字符,我们在python中也是的,使用的时候需要将字符转换成为相应的数据类型。 所以我们就是需要使用输出控制符将字符转化成为我们需要的数据类型进行输入。搞懂了为什么要使用输出控制符,我们再来回答上面的问题。 scanf函数在进行输入的时候,先对字符串进行读取,例如"123mmmm",读取的123符合%d的输入形式,所以就赋值给了i。但是后面的mmmm不符合%d的输入形式,继续的留在输入的字符串中,等待 下一次的读取。结果在下面使用scanf函数的时候,率先从上面没有读完的地方继续进行读写,mmmm显然不符合%d所以初始化变量j失败,系统自动为变量j赋值为垃圾值。这就是为什么出现上面现象 的原因。如果输出控制符改为%c那就一点问题都没有了,因为mmmm是满足这个控制符的。 ---------------------------------------------------------- */ }
我们看到用户的非法输入给后面造成了严重的影响
- 控制非法输入
# include<stdio.h> int main(void) { int i,j,k; char ch; printf("请进行第一次输入...\n"); scanf("%d",&i); printf("i=%d\n",i); while(ch=getchar()!='\n') continue; printf("----------------\n"); printf("请进行第二次输入....\n"); scanf("%d",&j); printf("j=%d\n",j); while(ch=getchar()!='\n') continue; printf("----------------\n"); printf("请进行第三次输入....\n"); scanf("%d",&k); printf("k=%d\n",k); return 0; /* ----------------vc++6.0中输出得结果----------------------- 请进行第一次输入... 23mmmmm i=23 ---------------- 请进行第二次输入.... 45mmmmmmmmmm j=45 ---------------- 请进行第三次输入.... 78mmmmmmmmmmm k=78 ----------------------------------------------------------- 心得: 我们看到加入一个while循环后就解决了这个问题。实际上也是比较好理解的就不细讲了。 */ }
上一篇: 大众学开发——59秒学习编写刮刮乐游戏
下一篇: python数据分析之pandas(2)
推荐阅读
-
c语言初学-关于内存空间的问题
-
关于C语言中的文件操作
-
c语言初学-关于指针作为参数并改变它的值的问题
-
c语言初学-关于if语句括号内的参数
-
教你编写c语言实现输入10个数按从大到小的顺序排序输出
-
C语言——常用标准输入输出函数 scanf(), printf(), gets(), puts(), getchar(), putchar(); 字符串拷贝函数 strcpy(), strncpy(), strchr(), strstr()函数用法特点
-
关于C++中字符串输入get与getline的区别
-
C语言笔记 09_共用体&typedef&输入|输出
-
C语言:实现一个函数,打印乘法口诀表,如:输入9,输出9*9口诀表
-
关于C语言中return用法的一些总结