查看: 988|回复: 5
|
C++有办法不让User输入太长的字吗?
[复制链接]
|
|
好像
char name[20];
int check;
do{
check=0;
cout<<"Please enter the name";
cin<<name;
if(strlen(name)>20){
cout<<"error";
check=1;
}
}while(check==1);
有时我打长过很多的INPUT它会显示两次COUT 和ERROR。所以我想在USER打时直接阻止,有这样的CODE吗? |
|
|
|
|
|
|
|
发表于 8-11-2006 01:27 PM
|
显示全部楼层
原帖由 城之内 于 8-11-2006 12:43 PM 发表
所以我想在USER打时直接阻止
- for (int i=0;i<MAXLEN &&c!='\n';i++)
- {
- c=getch();
- putchar(c);
- name[i]=c;
-
- }
复制代码
[ 本帖最后由 tensaix2j 于 8-11-2006 02:13 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 8-11-2006 05:49 PM
|
显示全部楼层
原帖由 tensaix2j 于 8-11-2006 01:27 PM 发表
for (int i=0;i<MAXLEN &&c!='\n';i++)
{
c=getch();
putchar(c);
name=c;
}
不是很明白,可以解释一下吗? |
|
|
|
|
|
|
|
发表于 8-11-2006 10:40 PM
|
显示全部楼层
嗯。。大致上的概念是。。 一个character一个character拿。。
那个代码我没测试的。。自己随需要改。。 |
|
|
|
|
|
|
|
发表于 21-11-2006 10:33 PM
|
显示全部楼层
可以試在你的code後面加上一句flush input buffer 的code
雖然是不好的programming practice 可是在下覺得蠻有用
不太記得是甚麼好像是cin.ignore(80, '\n')
char name[20];
int check;
do{
check=0;
cout<<"Please enter the name";
cin<<name;
if(strlen(name)>20){
cout<<"error";
check=1;
cin.ignore(80, '\n')
}
}while(check==1); |
|
|
|
|
|
|
|
发表于 23-11-2006 11:42 AM
|
显示全部楼层
原帖由 doomscythe 于 21-11-2006 10:33 PM 发表
可以試在你的code後面加上一句flush input buffer 的code
雖然是不好的programming practice 可是在下覺得蠻有用
不太記得是甚麼好像是cin.ignore(80, '\n')
char name;
int check;
do{
check=0; ...
楼主想要的是"既时阻止"。。也就是不给user key in >20 characters在buffer...
所以只能character by character 拿。。
不然你一开buffer (any type of taking input,eg: cin,scanf, getc etc..) , user 不按enter的情况下, 你没办法check的。。
[ 本帖最后由 tensaix2j 于 23-11-2006 11:58 AM 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|