| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 466 人关注过本帖
标题:[求助]程序编译出错各位高手给看看怎么改啊?(现在通过了T_T)
只看楼主 加入收藏
wdeg
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-30
收藏
 问题点数:0 回复次数:3 
[求助]程序编译出错各位高手给看看怎么改啊?(现在通过了T_T)

这是书上的一个例题..俺只是照抄拿来编译, 俺是刚刚才学编程的.... 模块功能:限制在输入整数和浮点数时只能输入合法的数字、正负号、小数点,其余的字符忽略。 /*自定义头文件*/ getnum.h ********************************** extern unsigned int getnumError; /*声明外部变量*/

int GetInt(void);

long GetLong(void);

float GetFloat(void);

double GetDouble(void); *************************************** getnum.c ************************************** #include "getnum.h" #include <stdlib.h> #include <conio.h> #include <stdio.h> #include <ctype.h>

#define BUFFER_SIZE 32 /*输入缓冲区大小*/

enum input_type{FLOAT,INT}inputType; /*输入类型*/ unsigned int getnumError=0; /*非0表示出错*/ static unsigned char buffer[BUFFER_SIZE]; /*输入缓冲区*/ static unsigned int pos=0; /*buffer中有效数据的末尾位置+1*/

static unsigned char *GetInput(void); static int IsValidChar(char ch); static int HasDot(void);

/* 函数功能:读取用户的int类型输入 入口:无 返回值:用户输入结果 */ int GetInt(void) { return (int)GetLong(); }

/* 函数功能:读取用户的long类型输入 入口:无 返回值:用户输入结果 */ long GetLong(void) { inputType=INT; return atol(GetInput()); }

/* 函数功能:读取用户的float类型输入 入口:无 返回值:用户输入结果 */ float GetFloat(void) { return (float)GetDouble(); }

/* 函数功能:读取用户的double类型输入 入口:无 返回值:用户输入结果 */ double GetDouble(void) { inputType=FLOAT; return atof(GetInput()); }

/* 函数功能:读取用户输入的字符串,限制必须时整数或者浮点数 入口:无 返回值:数据缓冲区 */ static unsined char* GetInput(void) { char c='\0'; pos=0;

while((c=getch())!='\r') /*回车输入结束*/ { if(c=='\b') /*输入退格符*/ { if(pos>0) { pos--; printf("\b\b"); /*删除前一个字符*/ } else { putchar('\a'); /*提示没有字符可删除*/ }

} else if(pos<(BUFFER_SIZE-1)) /*防止越界and为'\0'预留空间*/ { if(IsValidChar(c)) /*合法字符保存并回显*/ { buffer[pos++]=c; putchar(c); } else { putchar('\a'); /*提示输入非法字符*/ }

} else /*提示达到buffer上界*/ { putchar('\a'); } }

buffer[pos]='\0'; putchar('\a');

if(pos>0) { getnumError=0; } else { getnumError=1; /*用户什么都没输入*/ }

return buffer;

}

/* 函数功能:判断当前输入是否合法 入口:无 返回值:非0表示合法,0表示非法 */ static int IsValidChar(char ch) { int result;

if(ch>='0'&&ch<='9')

result=1;

else if(ch==0&&(ch=='-'||ch=='+'))

result=1;

else if(ch=='.'&&inputType==FLOAT&&(HasDot))

result=1;

else

result=0;

return result;

}

/* 函数功能:判断是否输入了小数点 入口:无 返回值:非0表示已经输入,0表示未输入 */ static in HasDot(void) { int i; for(i=0;i<pos&&buffer[i]=='.';i++)

;

return (i<pos);

} *********************************** main.c *********************************** #include "getnum.h"

main() { double f;

do {

printf("Input a number:"); f=GetDouble(); if(getnumError!=0)

printf("You input nothing.\n");

else

printf("What you input is %lf.\n",f);

}while(f!=-1);

} ***************************************

[此贴子已经被作者于2005-9-12 20:03:40编辑过]

搜索更多相关主题的帖子: 编译 
2005-09-11 18:56
wdeg
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-30
收藏
得分:0 
为啥没人帮帮俺啊??.....T_T
2005-09-12 14:48
南湖潜龙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-9-10
收藏
得分:0 
没有说明
比如你的算法思想 几个函数的功能
谁花那么多时间自己捉摸呀
2005-09-12 15:19
wdeg
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-7-30
收藏
得分:0 
终于找到原因了....是因为3个输入错误.....晕啊....

各位兄弟如果因为此帖浪费了你的时间,请接受俺诚挚的道歉.....

另外多谢南湖兄提醒,以后俺发帖一定会注意这些细节的东西的.....

虽然通过了,俺还是重新编辑了主帖,算给各位菜鸟同人一个参考吧....嘿嘿.....

各位兄弟,以后还请多多帮忙....
2005-09-12 20:11
快速回复:[求助]程序编译出错各位高手给看看怎么改啊?(现在通过了T_T)
数据加载中...
 
   



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

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