#include"stdio.h"
#include"string.h"
int MAX;
char str[31],temp[31];
int o,p,q,r;
void main()
{
char m_name[MAX],sm_name[MAX];
char m_mima[MAX],sm_mima[MAX];
char *name=m_name,*s_name=sm_name;
char *mima=m_mima,*s_mima=sm_mima;
printf("注册您当前用账号和密码!\n");
printf("注册账号为:");
gets(s_name);
printf("注册密码为:");
gets(s_mima);
printf("注册完成!\n");
printf("请输入账号:");
gets(name);
printf("请输入密码:");
gets(mima);
printf(strcmp(s_name,name));
if (strcmp(s_name,name)==0 && strcmp(s_mima,mima)==0) printf("登录成功!\n");
else printf("登录失败!\n");
printf("请输入IP地址");
while(gets(str)!=NULL)
{
if(scanf(str,"%r.%r.%r.%r",&o,&p,&q,&r)==4
&& o>=0 && o<=255
&& p>=0 && p<=255
&& q>=0 && q<=255
&& r>=0 && r<=255) //IP地址每个字节的范围限制
{
printf(temp,"%r.%r.%r.%r",o,p,q,r);
if(strcmp(temp,str)==0)
{
printf("IP地址合法\n");
}
else
{
printf("IP地址不合法\n");
}
}
else
{
printf("IP地址不合法\n");
}
}
return 0;
}
这个c语言程序运行后,注册的用户名和密码后,为什么不管输入什么用户名和密码都能成功登陆,还有IP不管怎么输入都是不合法的?应该怎么改
strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
char *name=m_name,这个是的name和m_name都指向了同一个地址,你对这个地址的内容做任何改变,name和m_name都是相同的,你应该另外开一个内存给name。
#include"stdio.h"
#include"string.h"
const int MAX = 64;
char str[31],temp[31];
int o,p,q,r;
void main()
{
char m_name[MAX],sm_name[MAX];
char m_mima[MAX],sm_mima[MAX];
char *name=m_name,*s_name=sm_name;
char *mima=m_mima,*s_mima=sm_mima;
printf("注册您当前用账号和密码!\n");
printf("注册账号为:");
gets(s_name);
printf("注册密码为:");
gets(s_mima);
printf("注册完成!\n");
printf("请输入账号:");
gets(name);
printf("请输入密码:");
gets(mima);
//printf(strcmp(s_name,name));
if (strcmp(s_name,name)==0 && strcmp(s_mima,mima)==0) printf("登录成功!\n");
else printf("登录失败!\n");
printf("请输入IP地址");
while(gets(str)!=NULL)
{
if(sscanf(str,"%d.%d.%d.%d",&o,&p,&q,&r)==4
&& o>=0 && o<=255
&& p>=0 && p<=255
&& q>=0 && q<=255
&& r>=0 && r<=255) //IP地址每个字节的范围限制
{
sprintf(temp,"%d.%d.%d.%d",o,p,q,r);
if(strcmp(temp,str)==0)
{
printf("IP地址合法\n");
}
else
{
printf("IP地址不合法\n");
}
}
else
{
printf("IP地址不合法\n");
}
}
return;
}
char *name=m_name,这个是的name和m_name都指向了同一个地址,你对这个地址的内容做任何改变,name和m_name都是相同的,你应该另外开一个内存给name。