首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

汉字和非法输入, 捆饶了很久的有关问题

2012-02-11 
汉字和非法输入, 捆饶了很久的问题.汉字和非法输入,这两个问题捆饶我很就久了.我用C写了几个小程序,如果按

汉字和非法输入, 捆饶了很久的问题.
汉字和非法输入,这两个问题捆饶我很就久了.
我用C写了几个小程序,如果按照提示操作都不会出错,都可以达到预想的效果.
关键是有时候,如果用户输入错误,那程序就出错了.比如说需要输入数字的时候,他输入的不是数字,需要输入字母的时候,他输入的不是字母.字母,数字,大一点的数字,小数,字符串,他什么都可能输入.

另一个问题是汉字的问题,自己的英语不是很好,另外感觉在我那小程序里,中文要比英文要好一点.我找到了支持汉字的C编译器,可关键   是在生成EXE后,运行EXE的时候,不行了,汉字的显示出错了.现在不考虑汉字的存储,只要我的提示能用汉字表示出来就可以了,也就是只要PRINTF语句中可以打印汉字就可以了,另外是不仅要在程序调试的时候可以用汉字,在生成EXE后,运行EXE的时候,汉字仍然可用.


大家帮忙,非常感谢.

[解决办法]
1.
汉字和非法输入,这两个问题捆饶我很就久了.
我用C写了几个小程序,如果按照提示操作都不会出错,都可以达到预想的效果.
关键是有时候,如果用户输入错误,那程序就出错了.比如说需要输入数字的时候,他输入的不是数字,需要输入字母的时候,他输入的不是字母.字母,数字,大一点的数字,小数,字符串,他什么都可能输入.

---------------------

完善错误处理功能

2.PRINTF语句中可以打印汉字就可以了,另外是不仅要在程序调试的时候可以用汉字,在生成EXE后,运行EXE的时候,汉字仍然可用.

----------
你用的什么环境?
[解决办法]
用正则表达式检验,可以考虑boost。
贴点伪码:
//判断是否数字
string str = "123456 ";
cout < < regex::match( "[\\d]+ ", str);
//判断是否字母用[a-zA-Z]+
[解决办法]
用TC?用vc或者gcc比较好。
[解决办法]
字符集是根据宿住机的环境而言,如果你要走遍天下都能显示汉字,就得随程序带汉字库。究其根本都是“内码”表示,如果机器上有相应的内码字符就能正常显示,否则看见的就是乱码;和编译器没关系。
[解决办法]
c++很大程度上是c语言超集,c++里可以混用c,你的旧代码照样可运行。
[解决办法]

我用C写了几个小程序,如果按照提示操作都不会出错,都可以达到预想的效果.
关键是有时候,如果用户输入错误,那程序就出错了.比如说需要输入数字的时候,他输入的不是数字,需要输入字母的时候,他输入的不是字母.字母,数字,大一点的数字,小数,字符串,他什么都可能输入.

这个就要靠你自己写异常处理程序了.

另一个问题是汉字的问题,自己的英语不是很好,另外感觉在我那小程序里,中文要比英文要好一点.我找到了支持汉字的C编译器,可关键是在生成EXE后,运行EXE的时候,不行了,汉字的显示出错了.现在不考虑汉字的存储,只要我的提示能用汉字表示出来就可以了,也就是只要PRINTF 语句中可以打印汉字就可以了,另外是不仅要在程序调试的时候可以用汉字,在生成EXE后,运行EXE的时候,汉字仍然可用.

应该是终端的显示设置的问题.
[解决办法]
可以考虑检验一下输入的字符
如一位数字的判断如下。如是多位数字的话,可以依次判断每一位。
char a;
if(30 <=a&&a <40)
{
int b=a-30;
...
}
字母的判断如
char a;
if(( 'a ' <=a&&a <= 'z ')||( 'A ' <=a&&a <= 'Z '))
{....}
另:也有现成的库函数可以调用,如isalpha()。

热点排行