|
查看: 1598|回复: 20
|
C programming 帮帮忙!!
[复制链接]
|
|
|
有谁可以帮帮忙?我用了这个CODE但是出来的,无论我打123或者abc,都是出这个Customer ID Card Number must contain 7 digit Number !!!
到底错在哪里?
//========== Validation for the Length of Customer ID Card Number ================
void getcardnumber(char cardnumbertemp[])
{
do{
gotoxy(42,11); clreol();
fflush(stdin);
gets(cardnumbertemp);
if(strlen(cardnumbertemp)!=7)
{
textcolor(14);
gotoxy(15,20);
cprintf("Customer ID Card Number must contain 7 digit Number !!!");
textcolor(14);
gotoxy(15,21);
cprintf(" Please press any key to try again...");
getch();
gotoxy(15,20); clreol();
gotoxy(15,21); clreol();
}
}while(strlen(cardnumbertemp)!=7);
}
//================ Close Validation of Customer ID Card Number ================
//=========== Function for Checking if Customer ID Card Number is Valid data =
int iscardnumber (char cardnumbertemp[])
{
char ch;
int i;
for(i=0;i<=0;i++)
{
ch=cardnumbertemp;
if(!isdigit(ch))
{
textcolor(14);
gotoxy(15,21);
cprintf("Customer ID Card Number accept only numbers !!!");
textcolor(14);
gotoxy(15,22);
cprintf(" Please press any key to try again... ");
getch();
gotoxy(15,21);clreol();
gotoxy(15,22);clreol();
return FALSE;
}
}
return TRUE;
}
//====================== Close Checking the Valid Data ========================
//================ Close Validation of Customer ID Card Number ================
//====================== reservation cardnumber Function ========================
void reservationcardnumber (char cardnumber[])
{
do{
clreol();
getcardnumber(cardnumber);
} while(!iscardnumber(reservation.cardnumber));
}
//================ Close of reservation cardnumber Function ===================== |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 01:05 PM
|
显示全部楼层
这是因为你的“Validation for the Length of Customer ID Card Number ”是firstchecking
...you must PASS this validation only will go for next checking such as Check isn't valid answer..
因为不知你testing的时候有没有test exactly."7" digit...
如我的understanding of your problem is wrong...sorry about that...因为C programming。。。N年前已经还给老师了。。。。
 |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 01:37 PM
|
显示全部楼层
回复 1# queenytan 的帖子
那個program都告訴你要7個digit了
你還123和abc干嘛
 |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 01:46 PM
|
显示全部楼层
因为你的function已经指明,你的输入必须是7个数目字!!!不论是“abc”还是“123"都不足七个字!!!
这就是你花了十天学来的?
现在明白C Programming不是那么简单的了吧?十天? |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 03:23 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 04:12 PM
|
显示全部楼层
各位。。。
我的意思是无论我打alphabet或者number它都是出现这个Customer ID Card Number must contain 7 digit Number !!
其实如果我打alphabet的话,应该出这个Customer ID Card Number accept only numbers !!! , 但是当我打alphabet时是出这个Customer ID Card Number must contain 7 digit Number !!
谢谢 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 04:16 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 04:37 PM
|
显示全部楼层
回复 6# queenytan 的帖子
那就加个isdigit 来测试不就好了吗?- ......................
- if( check_isdigit( your_string ) == 0 )
- printf("Customer ID Card Number accept only numbers !!!");
- .....................
- int check_isdigit(char str[])
- {
- int i;
- for(i = 0; i < strlen(str); i++)
- if(isdigit( str[i] ) == 0 )
- return 0;
- return 1;
- }[/i]
复制代码 |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 04:37 PM
|
显示全部楼层
回复 6# queenytan 的帖子
那是因为你在呼叫iscardnumber()之前就已经在getcardnumber()里面进行了字数的检测,并否定了任何不足7个字元的输入。
正确的做法是在读取输入的同时检测输入是否是数字,同时计算数字,字数不足或超过就给与警告:- //在这个例子里面,使用者_必须_输入足够7个的_数目字_,否则无法离开。
- char buffer[8];
- ...//initialize buffer to 0 with memset() or whatever method
- int get_user_input(char *buffer)
- {
- int count = 0;
- char ch;
- do
- {
- ch = getche();
- if(ch < '0' || ch > '9') //ch is not a digit
- {
- printf("Numbers only!"); //or whatever message functions you may want to use.
- continue; //no input accepted
- }
- else
- {
- buffer[count] = ch;
- count++;
- }
- }while(count < 7);
- return count; //return number of input accepted (max 7)
- }
复制代码
[ 本帖最后由 geekman 于 19-3-2009 04:54 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 05:53 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 05:57 PM
|
显示全部楼层
原帖由 geekman 于 19-3-2009 04:37 PM 发表 
那是因为你在呼叫iscardnumber()之前就已经在getcardnumber()里面进行了字数的检测,并否定了任何不足7个字元的输入。
正确的做法是在读取输入的同时检测输入是否是数字,同时计算数字,字数不足或超过就给与警告 ...
你给我的,为什么要打7个alphabet才可以? |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 06:06 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 06:07 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 06:17 PM
|
显示全部楼层
原帖由 onlylonly 于 19-3-2009 06:06 PM 发表 
把你整个程式的code 贴上来吧。
包过main
我ADD你MSN好吗?我PM你了。。。谢谢 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 06:27 PM
|
显示全部楼层
我知道为什么了。。。我要打7个alphabet才会出这个Customer ID Card Number accept only numbers !!!
那我要的是无论打多少个alphabet都会出这个Customer ID Card Number accept only numbers !!!
可以吗?? |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 06:31 PM
|
显示全部楼层
回复 15# queenytan 的帖子
你没看懂 geekman 大大的code。。。。
他的algorithm可以在过滤alphabert 后, 让用户继续输入number, 一直到有7个number为止
如 ab1234567 <- 7 numbers
12a34567 <- 7 numbers
[ 本帖最后由 onlylonly 于 19-3-2009 07:20 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-3-2009 06:49 PM
|
显示全部楼层
回复 16# onlylonly 的帖子
好,我看可以了。
谢谢 |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 07:18 PM
|
显示全部楼层
回复 16# onlylonly 的帖子
不好用“它”来形容我啦。。。虽然我的头像是一只兔子。。。 |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 07:20 PM
|
显示全部楼层
回复 18# geekman 的帖子
|
唉。。。。 手快打错了。。 paiseh paiseh |
|
|
|
|
|
|
|
|
|
|
发表于 19-3-2009 10:01 PM
|
显示全部楼层
回复 5# onlylonly 的帖子
哇。。。 MMU 的assignment 蛮厉害。。
第一个 只是写类似 sql compiler 的东西吗????execute INSERT和SELECT statement。。。
第二个 。 一个stack 就可以gaotim了。。。
有水准。。 有水准。。
回复 17# queenytan 的帖子
楼主。。
放多点心思把。。。 |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|