当前位置: 代码迷 >> C语言 >> 自己些个函数,加个判断。可他不理我
  详细解决方案

自己些个函数,加个判断。可他不理我

热度:253   发布时间:2007-05-09 20:44:12.0
自己些个函数,加个判断。可他不理我

这是一个程序段主要是一个注册的函数,我在机器上编译,没提示错误,可是一运行就不行在用户上家

了个为数和组成的判断可判断不管用,那位帮我看看啊!

#include <stdio.h>
#include <string.h>

struct pim //定义结构体个人信息
{
char name[10];
char passwd[20] ;
char passwd1[20] ;

};

struct pim x;

void zhuce()
{
int y=0,z=0;

printf("请输入要注册的用户名:(长度为10以内,由数字或密码字母组成)\n");
while(z==0)
{

scanf("%s",&x.name);
if(strlen(x.name)>10)
{
printf("您输入的名字太长,请重新输入:");
z=0;
}
else
{
for(int i=0;i<strlen(x.name);i++)
{
if((x.name[i] >= '0' && x.name[i] <= '9')||(x.name[i] >= 'a' &&
x.name[i]<='z')||(x.name[i]>='A' && x.name[i]<='Z'))
{
printf("您输入的用户名符合要求为:%s",x.name);
}
else
printf("用户名错误,重写");
}
}
}
}

[此贴子已经被作者于2007-5-9 21:06:05编辑过]

搜索更多相关的解决方案: 函数  注册  include  个人信息  结构体  

----------------解决方案--------------------------------------------------------
主函数没有 调用子程序的语句又 没有
你写的是不是C啊?????
----------------解决方案--------------------------------------------------------
这是一个程序段主要是一个注册的函数
看好是一个程序段。。。。。

----------------解决方案--------------------------------------------------------
printf("您输入的用户名符合要求为:%s",x.name);

每判断一个字符为合法上面的语句就要执行一次,应该改为判断完之后名字为合法才打印

还有你的循环控制条件不好
----------------解决方案--------------------------------------------------------
else
{
for(int i=0;i<strlen(x.name);i++)
{
if((x.name[i] >= '0' && x.name[i] <= '9')||(x.name[i] >= 'a' &&
x.name[i]<='z')||(x.name[i]>='A' && x.name[i]<='Z'))
{
printf("您输入的用户名符合要求为:%s",x.name);
}
else
printf("用户名错误,重写");
}
}
改为:
else
{ int i;
for(i=0;i<strlen(x.name);i++)
{
if((x.name[i] <'0' && x.name[i] > '9')&&(x.name[i] > 'a' &&
x.name[i]>'z')&&(x.name[i]<'A' && x.name[i]>'Z'))
{ /*若输入的字符不在0-9、a-z、A-Z之间,则退出循环,重新输入*/
printf("用户名错误,重写");
break;
}

}
if(i>=strlen(x.name))
{
printf("您输入的用户名符合要求为:%s",x.name);
z=1; /*中止while循环*/
}
}
还有:将
if(strlen(x.name)>10)
{
printf("您输入的名字太长,请重新输入:");
z=0;
}
中的z=0改为continue应该会比较好吧,或者是直接去掉.
----------------解决方案--------------------------------------------------------
scanf("%s",&x.name);

----------------解决方案--------------------------------------------------------
以下是引用Knocker在2007-5-10 12:31:34的发言:
scanf("%s",&x.name);

你似乎活得还很好


----------------解决方案--------------------------------------------------------
反正死不了
----------------解决方案--------------------------------------------------------
4楼5楼的谢了
----------------解决方案--------------------------------------------------------
以下是引用gufei1122在2007-5-10 15:17:25的发言:
4楼5楼的谢了

孺子不可教也


----------------解决方案--------------------------------------------------------
  相关解决方案