当我运行程序时,它会无限期地要求输入密码。我输入了正确的密码,但它只是循环回来。我在编译时没有错误。为了编译,我使用了:
gcc -ansi -W -Wall -pedantic -o prog myProgram.c
chmod +x prog
我正在运行ubuntu可靠。以下是与密码相关的代码:
char string[100] = "";
int main(void)
{
char correctPassword[25] = "myPassword";
char password[25] = "";
system("clear");
printf("Enter your password:\n");
scanf("%s", password);
if (password == correctPassword)
{
system("clear");
printf("Enter a string:\n");
scanf("%s", string);
}
else
{
system("clear");
printf("Sorry, incorrect password\n");
system("pause");
main();
}
更新代码:
char string[100] = "";
int main(void)
{
char correctPassword[25] = "myPassword";
char password[25] = "";
int ret;
system("clear");
printf("Enter your password:\n");
scanf("%s", password);
ret = strcmp(password, correctPassword);
if (ret == 0)
{
system("clear");
printf("Enter a string:\n");
scanf("%s", string);
}
else
{
system("clear");
printf("Sorry, incorrect password\n");
system("pause");
main();
}
return 0;
}
编辑2:我认为现在这已经解决了,我如何将其标记为?
答案 0 :(得分:3)
这一行
if (password == correctPassword)
不符合您的想法。它不是比较字符串,而是比较每个字符串的第一个字符的内存地址。如果你想比较字符串,你想使用strcmp,你可以在这里阅读:http://www.tutorialspoint.com/ansi_c/c_strcmp.htm
编辑响应代码的变化;你有这条线
if(ret = 0)
你想要
if(ret == 0)
我认为这是一个错字。
答案 1 :(得分:-3)
在scanf语句中添加&符号。
scanf("%s", &password);