编写了个 c语言程序有点问题,麻烦大神来看看~

问题描述

编写了个 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

编写了个 c语言程序有点问题,麻烦大神来看看~的相关文章

c语言程序题来个大神帮忙下

问题描述 c语言程序题来个大神帮忙下 用一张百元纸币兑换一元.二元和五元的纸币,要求兑换后纸币的总数为50 张,问共有多少种换法? 每种换法中各面值的纸币分别为多少张?求大神给个c的程序,急用 strong text 解决方案 穷举就可以了 for (int i = 0; i <= 100; i++) for (int j = 0; j <= 50; j++) for (int k = 0; j <= 20; j++) { if (i + j + k == 50 && i

有个c程序不懂,麻烦大神看看~~

问题描述 有个c程序不懂,麻烦大神看看~~ #include #include struct e { char a[10]; char b[10]; }z; int main() { int t=0; char s[10],d[10]; FILE *p; void as(); if ((p=fopen("m.txt","r+"))==NULL) { p=fopen("m.txt","w+"); t=1; } if(t==1)

程序无法运行-android大神来,新手求助

问题描述 android大神来,新手求助 做新手练习题,在添加新activity后使用intent与原activity交互,但不知道为什么程序无法运行了,console也没有错误信息,可能是哪里错了呢?是不是manifest.xml有问题呀? logcat显示错误信息如下,是否有帮助 [2013-10-15 18:52:31 - Unexpected error while launching logcat. Try reselecting the device.] device not fou

《C语言编程——零基础初学者指南(第3版)》一1.2 编写C语言程序需要什么

1.2 编写C语言程序需要什么 C语言编程--零基础初学者指南(第3版)在计算机上编写并执行C语言程序之前,需要一个C编译器(C compiler).C编译器用于创建(build)或编译(compile)C程序(编译是一个技术术语,指将程序转换为计算机可读的内容),让你在需要查看结果时可以运行已编译的程序.现在有许多非常优秀且免费的软件包,可以用它们来编辑并编译你的C程序.通过网络搜索即可找到诸多这样的软件.本书使用的是Code::Blocks(www.codeblocks.org ). 提示

《21天学通C语言(第6版•修订版)》一1.5 第一个C语言程序

1.5 第一个C语言程序 21天学通C语言(第6版•修订版)读者也许迫不及待地想编写第一个C语言程序.为帮助读者熟悉编译器,程序清单1.1包含一个小型程序,功能快速地完成.现在,读者也许无法理解其中的所有内容,但不用担心,尽管编写.编译并运行它. 这里的演示使用的是一个名为hello.c的程序,该程序只是将单词"Hello, World!"显示到屏幕上而已.该程序常被用来介绍C语言编程,很适合读者进行学习.程序清单1.1列出了hello.c的源代码.输入该程序清单时,请不要输入最左边的

中文字符-如何用C语言编写一个简单的输入法程序,要求可以输入汉字。

问题描述 如何用C语言编写一个简单的输入法程序,要求可以输入汉字. 不太清楚汉字在计算机中是如何存储的,想知道例如微软的智能ABC以及搜狗输入法是怎样实现拼音拼写下的汉字输入. 解决方案 首先要有一个汉字的编码库,比如GB2312编写的是拼音输入法的话,还要建立一个拼音与汉字对应的数据库然后根据用户输入的拼音,提示出对应的汉字(汉字的优先顺序由数据库决定,同时还可以学习该用户的使用习惯)如果输入法还支持智能联想输入的话,还要加入词库(也有优先级),这样可以根据前一个字来推断出下一个可能的字 解决

c语言-用C语言编写能进行四则运算的程序

问题描述 用C语言编写能进行四则运算的程序 我想用C语言编一个能进行简单的四则运算的程序,应该怎么写,请详细解释一下输入和计算部分 解决方案 实现四则运算是比较简单的,你可以使用两个栈,一个栈用来存贮操作的数字(0~n),一个栈用来存储操作符(+-等).你先把四则运算表达式存为一个字符串,然后遍历各个字符,如果是数字,那就存起来,如果是操作符,那就与前一个操作符比较,看看优先级是不是比前一个大,如果是,那就存起来,如果不是,那就把数字栈里的前两个数按照前一个操作符进行运算.结果用一个变量保存起来

求帮助啊 急用啊-用c语言编写剔除粗大误差的程序和相应的流程图

问题描述 用c语言编写剔除粗大误差的程序和相应的流程图 用c语言编写剔除粗大误差的程序以及流程图,用那种方法都行,只要正确就行 解决方案 什么叫最大误差?给个定义好么?没有定义怎么解决你的问题 解决方案二: 您可能没看清题,是粗大误差不是最大误差,有答案请尽快回答,急急急

通过自己编写的C语言程序获取lcm正常格式的初始化数据代码

1正常格式初始化数据的C代码 2供应商给的lcm初始化数据 3编写的语言程序获取lcm正常格式的初始化数据代码 4获取lcm正常格式的初始化数据代码 注:为了保护供应商lcm初始化数据,下面的数据都是做参考的假数据. 1正常格式初始化数据的C代码 lcm正常格式的初始化数据的C代码是下面那样的.是一个结构体数组,每一个元素都包括三个基本数据,分别是寄存器地址.参数个数和对应的参数. static struct LCM_setting_table lcm_initialization_settin