比较字符串

时间:2009-05-15 18:35:28

标签: c

考虑这段代码

char *pass="test";
int keyPressed;
char *password=(char *)malloc(PASS_LENGTH*sizeof(char));
int index=0;
printf("Enter the password please\n");
do
{
    keyPressed=getch();
    password[index++]=keyPressed;
}
while(keyPressed!=13);
int result=strcmp(pass,password);

我想你明白我想做什么:) 我读了*密码“test”,但结果不是0,一些解释会很好:)

6 个答案:

答案 0 :(得分:6)

因为我认为这是作业...尝试在按下Enter后写出字符串,看看是否能看到差异。

答案 1 :(得分:5)

您必须删除最后一个字符并“关闭”字符串:put

password[index - 1] = '\0' 
之后

答案 2 :(得分:1)

akappa的建议将解决你所看到的strcmp问题。

另请注意,您正在使用有限数量的内存,但在编写此内存时,不会检查已分配块的大小。 写入的代码将允许写入“密码”的结尾。

答案 3 :(得分:0)

看起来它会是“test \ n”,因为你已经添加了keyPressed。从而也溢出了密码变量。

答案 4 :(得分:0)

你应该在最后一行代码之前使用malloc PASS_LENGTH + 1并设置密码[index] = 0。 因为strcmp和其他C str例程使用ASCIIZ字符串

答案 5 :(得分:0)

回车包含在password的末尾。