| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3112 人关注过本帖
标题:C中输入错误数据类型如何处理
只看楼主 加入收藏
Butter_fly
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
C中输入错误数据类型如何处理
C程序中,运用scanf()输入数据时,不小心输入非法字符,即程序中是float类型变量,用户输入字符a,程序运行出错,用什么方法可以避免这样的错误发生?
搜索更多相关主题的帖子: 类型 数据 输入 
2010-07-31 12:02
BJ_BOY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:77
专家分:225
注 册:2010-2-4
收藏
得分:2 
请楼主阅读下面的代码,并调试运行,你的问题答案就得到了解决!
你可以在需要输入整数的时候,你输入字符试试,会提示你输入错误,并显示相应的错误代码!


程序代码:
#include <stdio.h>

#if defined(_MSC_VER)
#define FLUSH(strm) ((strm)->_cnt = 0)
#else
#define FLUSH(strm) FlushInputStream(strm)
#endif

void FlushInputStream(FILE *strm)
{
    int ch;
    do ch = getc(strm); while (ch != '\n' && ch != EOF);
}

void PrintError(char const* msg, FILE *istrm)
{
    fputs(msg, stderr);
    FLUSH(istrm);
}


int GetInt1(int* value)
{
    return scanf("%d", value) == 1 && 0 < *value && *value < 6;
}


int GetInt2(int* error )
{
    int value = 0;

    if (!(scanf("%d", &value) == 1 && 0 < value && value < 6))
    {
        *error = 1;
    }

    return value;
}

static int errorCode;

int GetInt3()
{
    int value = 0;

    errorCode = !(scanf("%d", &value) == 1 && 0 < value && value < 6);

    return value;
}

int main()
{
    int value;
    int  error ;

    if (GetInt1(&value)) printf("read %d\n", value);
    else PrintError("GetInt1 failed\n", stdin);

    error = 0;
    value = GetInt2(&error);
    if (error == 0)
        printf("read %d\n", value);
    else
        PrintError("GetInt2 failed\n", stdin);

    errorCode = 0;
    value = GetInt3();
    if (errorCode == 0)
        printf("read %d\n", value);
    else
        PrintError("GetInt3 failed\n", stdin);
  
    system("PAUSE");
    return 0;
}

2010-07-31 13:42
yjm218
Rank: 2
等 级:论坛游民
帖 子:10
专家分:17
注 册:2010-7-31
收藏
得分:2 
好难啊
2010-07-31 14:30
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:2 
2楼的有点难度。。。。。。。。。。。。。。。


强制转换
()a
()里填类型

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-07-31 16:39
twp90
Rank: 2
等 级:论坛游民
帖 子:26
专家分:14
注 册:2008-11-27
收藏
得分:2 
数据类型转换
2010-07-31 17:20
will5002
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2010-7-18
收藏
得分:2 
转换...
2010-07-31 18:04
Butter_fly
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-31
收藏
得分:0 
谢谢各位,不是类型转换,可能我没表达清楚,就是说,程序中定义的是浮点型变量,当用户输入数据时不小心输入了字符,程序一定出错,为了避免这种错误发生,我们在写代码时,如何解决这种问题,这个应该是程序的测试问题,请教各位大师,谢谢
2010-07-31 21:24
Butter_fly
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-31
收藏
得分:0 
回复 2楼 BJ_BOY
谢谢,这个也太过高了一点,对于初学者,有点难了  
2010-07-31 21:26
Butter_fly
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-31
收藏
得分:0 
回复 2楼 BJ_BOY
在程序是int和char类型是可以相互赋值的,问题是对于float\double和 char类型,若输入不匹配,则会报错   怎样解决
2010-07-31 21:29
快速回复:C中输入错误数据类型如何处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025181 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved