
C++程序问题,请高手帮忙调试
#include<stdio.h>#include<stdlib.h>intmain(void){charstr[258],str2[258],a,b;printf("请...
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",str2);
if (a==b)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
} 展开
#include <stdlib.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",str2);
if (a==b)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
} 展开
4个回答
展开全部
一楼 小神龙飞呀飞 搞笑了,看来你的C语言也是半生不熟啊。
str和str2本来就是字符数组名,传入scanf与%s匹配完全正确。不知道一楼是咋调试的,居然还说“调试好的程序”。
楼主的问题在于比较两个密码应该比较str和str2,而不是比较a和b。
比较字符串要用strcmp函数,返回0表示相等。
应该如此改:(GCC调试通过)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",str2);
/*strcmp是比较两个字符串的函数,返回0表示相等,要包含头文件string.h*/
if (strcmp(str,str2)==0)
{
printf("密码正确!\n");
}
else
{
printf("密码错误!\n");
}
system("PAUSE");
return 0;
}
str和str2本来就是字符数组名,传入scanf与%s匹配完全正确。不知道一楼是咋调试的,居然还说“调试好的程序”。
楼主的问题在于比较两个密码应该比较str和str2,而不是比较a和b。
比较字符串要用strcmp函数,返回0表示相等。
应该如此改:(GCC调试通过)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",str2);
/*strcmp是比较两个字符串的函数,返回0表示相等,要包含头文件string.h*/
if (strcmp(str,str2)==0)
{
printf("密码正确!\n");
}
else
{
printf("密码错误!\n");
}
system("PAUSE");
return 0;
}
展开全部
调试好的程序:楼主忘写& 符号了
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",&str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",&str2);
if (a==b)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[258],str2[258],a,b;
printf("请输入密码,按回车键结束:\n");
a=scanf("%s",&str);
printf("请重复密码,按回车键结束:\n");
b=scanf("%s",&str2);
if (a==b)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼在胡扯,scanf输入字符串的返回值是读取的字符串长度。
长度一致并不能说明字符串匹配。 所以要用strcmp来比较获取的两个字符串是否一致。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[258],str2[258];
printf("请输入密码,按回车键结束:\n");
scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
scanf("%s",str2);
if (strcmp(str, str2)==0)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
}
长度一致并不能说明字符串匹配。 所以要用strcmp来比较获取的两个字符串是否一致。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[258],str2[258];
printf("请输入密码,按回车键结束:\n");
scanf("%s",str);
printf("请重复密码,按回车键结束:\n");
scanf("%s",str2);
if (strcmp(str, str2)==0)
printf("密码正确!\n");
else
printf("密码错误!\n");
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意2楼的观点;这个比较 没有意义;应该strcmp 比较字符串 ;但是scanf并不是 返回读取字符串长度 而是返回被成功赋值的 变量数;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询