问题描述
- 编写了个 c语言程序有点问题,麻烦大神来看看~ 2C
- #include""stdio.h""
#include""string.h""
int MAX;
char str[31]temp[31];
int opqr;
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_namename));
if (strcmp(s_namename)==0 && strcmp(s_mimamima)==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""opqr);
if(strcmp(tempstr)==0)
{
printf(""IP地址合法n"");
}
else
{
printf(""IP地址不合法n"");
}
}
else
{
printf(""IP地址不合法n"");
}
}
return 0;
}
这个c语言程序运行后,注册的用户名和密码后,为什么不管输入什么用户名和密码都能成功登陆,还有IP不管怎么输入都是不合法的?应该怎么改
解决方案
strcmp(const char *s1const 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 opqr;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_namename)); if (strcmp(s_namename)==0 && strcmp(s_mimamima)==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""opqr); if(strcmp(tempstr)==0) { printf(""IP地址合法n""); } else { printf(""IP地址不合法n""); } } else { printf(""IP地址不合法n""); } } return;}
解决方案四:
char *name=m_name,这个是的name和m_name都指向了同一个地址,你对这个地址的内容做任何改变,name和m_name都是相同的,你应该另外开一个内存给name。
时间: 2024-12-22 13:38:11