码迷,mamicode.com
首页 > 编程语言 > 详细

关于C语言得非法输入

时间:2020-03-14 14:47:42      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:循环   解决   讲解   return   clu   tchar   ret   影响   scanf   

关于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
-----------------------------------------------------------

    心得:
    
    我们看到只有第一次的输入是正确的。后面两次是因为带有不能转换为整型的字符而出现垃圾数据。前面我们也讲解了是因为识别的时候遇到了不是整型的就自动放弃了。
    
    所以在这里就不详细的讲解了。
----------------------------------------------------------
*/
}

我们看到用户的非法输入给后面造成了严重的影响


  • 控制非法输入
# 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循环后就解决了这个问题。实际上也是比较好理解的就不细讲了。

*/
}

关于C语言得非法输入

标签:循环   解决   讲解   return   clu   tchar   ret   影响   scanf   

原文地址:https://www.cnblogs.com/huao990928/p/12491986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!