输入数据验证的问题,帮帮忙!谢谢各位!
1. 如何验证输入的数据只为 小数或者整数,或者负的小数或者整数,其他的都为非法字符? 我本来想用isdigit(),但是这个函数似乎只能验证整数的输入,如果带小数点,或者负号就不行了。
2.这个问题我很头痛!分数式输入的验证:
eg.
printf("\nEnter fraction #1: ");
fgets(fraction1, OUTPUT_MAX, stdin);
sscanf(fraction1, "%d/%d", &s1, &s2);
printf("Enter fraction #2: ");
fgets(fraction2, OUTPUT_MAX, stdin);
sscanf(fraction2, "%d/%d", &s3, &s4);
上面的代码是要输入一个分数式,如:1/2,然后分别提取“/“ 左右2边的数字。
可是如何验证输入的内容正确呢?这个问题很头痛~~想了好久了。我也是过用isdigit验证s1,s2,可是不知道什么原因,没有效果。但是编译的时候却没有错误。还有因为带"/"号,搞的我好乱现在,希望各位能帮帮我!
问题点数:20、回复次数:3Top
1 楼cncsc(摇头虱子)回复于 2005-04-18 00:03:44 得分 0
关于第2点,我试过用
if(!isdigit(s1))
{
printf("wrong!");
}
可是不管我输入的是1/2还是jfkdjdk/dfskaf
它都输出wrong,这是怎么回事啊?Top
2 楼pcboyxhy(-273.15℃)回复于 2005-04-18 07:29:06 得分 20
.函数sscanf:相当与sprintf的反函数,它是将数组中的字符串按固定格式读取到变量中,返回值是实际赋值的变量数,其中不包括*号跳过的域,零代表未赋值域,EOF表示第一次赋值前已经出错.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int s1, s2, ok;
char fraction1[100];
printf("\nEnter fraction #1: ");
fgets(fraction1, 10, stdin);
ok=sscanf(fraction1, "%d/%d", &s1, &s2);
printf("%d", ok); //ok==2 的时候表示输入正确
system("PAUSE");
return 0;
}Top
3 楼cncsc(摇头虱子)回复于 2005-04-18 09:02:50 得分 0
谢谢!可是明白了!Top




