c语言字符串的输入输出和比较

程序目的是检验2次输入的密码是否相同.#include<stdio.h>#include<string.h>#include<conio.h>voidmain(){cha... 程序目的是检验2次输入的密码是否相同.
#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()

{
char str1[8],str2[20],str3[7],str4[7];
int i;

printf ("Please input your password.\n");
for (i=0;i<6;i++)
{
str1[i] = getch ();
printf ("*");
}
printf ("\n");

printf ("Please input your password again.\n");
for (i=0;i<6;i++)
{
str2[i] = getch ();
printf ("*");
}
printf ("\n");

puts (str1);
printf ("\n");
}

以上没有给出比较..但我这样检验时,输出的的str1是XXXXXX烫烫..
为什么会出现"烫"??

如果要比较str1和str2,是不是要调用sprintf将他们转换成字符串放在str3,str4中?

高手帮我解释一下...我现在学到字符数组就有点昏了..
我这样调用sprintf对不?

sprintf (str3[i],%s,str1[i])
展开
 我来答
seahorse47
2008-05-04 · TA获得超过182个赞
知道小有建树答主
回答量:62
采纳率:0%
帮助的人:112万
展开全部
你的字符串输入完成后没有加上字符串结束标志'\0',用puts输出的时候,正常输出结束后不会停止,会继续输出后面的内容.str1[6]以后的内容全为CC,而CC CC(这是两个字节的连续内存中的内容,用16进制表示)会输出来就是"烫".
正确的是
for (i=0;i<6;i++)
{
str1[i] = getch ();
printf ("*");
}
str1[i]='\0'; //加上结束标志.
printf ("\n");
后面str2的输入部分也同样修改.

比较的时候可以直接用strcmp(str1,str2)比较,不用再复制.
榊桗桗
2008-05-04 · TA获得超过227个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:285万
展开全部
因为你的字符数组没有初始化。
在初始化时写成char str1[8] = {0};
或在使用前清0
ZeroMemory(str1, 8);

至于比较字符串,不需要另做保存的。
使用函数strcmp,如:
if (0 == strcmp(str1, str2))
{
// 相等
}

sprintf用法例:
sprintf(str1, "%s", "str2");

复制字符串的方法很多的:
1.
char buf[256] = {0};
strcat(buf, str1);
2.
strcpy(str2, str1);
3.
memcpy(str2, str1, strlen(str1));

类似的函数很多,我就写这么多了,都要注意内存是否够用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zubyzuby
2008-05-04 · TA获得超过1539个赞
知道小有建树答主
回答量:1118
采纳率:100%
帮助的人:1212万
展开全部
自己揣摸一下:
sprintf (str3,"%s",str1);
sprintf (str3[i],"%c",str1[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式