scanf()无法按预期工作

时间:2016-01-30 23:01:26

标签: c

我正在写一个密码检查程序。我遇到了一个问题。 当我运行程序时,所有内容都以纯文本形式打印出来,而不是允许用户输入。我还尝试运行之前有效的其他程序,但它们都有同样的问题。这是我的代码和问题的图像the imege

#include <stdio.h>

main()

{
int password, pass2;
char name;
printf("\nInput your name: ");
scanf("%c", &name);

printf("\nEnter your password(must be a number): ");
scanf("%d, &password");

printf("\nRe-enter your password(must be a number): ");
scanf("%d, &pass2");

 if("password == pass2")
{
    printf("welcome %c", name);
}
else{
    printf("sorry your passwords did not match!");
}
getch();

}

1 个答案:

答案 0 :(得分:3)

你犯了一些错误,

scanf("%d, &password");

调用 scanf 的正确方法如下。

 scanf ( const char * format, ... );

这行中用C编码的正确方法是。

scanf("%d", &password);

第15行也有错误。

if("password == pass2")

比较数字的正确方法是

if(password == pass2)

字符问题。

您正在声明一个字母,在C中是一个单个字符

在阅读字符串时,您应该声明一个char数组,并且要读取/写入它,您应该使用%s

这种方法也有问题,像“firstname lastname”这样的词语不起作用,但我会把它作为你的工作。

学习时出现一些错误,你可以在

中查看一些帮助

http://www.cplusplus.com/

对于更“引导”的方法,您也可以查看

http://c.learncodethehardway.org/book/

这是“正确的”最终代码。 (它仍然需要一些改进,但会按预期运行。)

#include <stdio.h>

int main() {
    int password, pass2;
    char name[20];
    printf("\nInput your name: ");
    scanf("%s", name);

    printf("\nEnter your password(must be a number): ");
    scanf("%d", &password);

    printf("\nRe-enter your password(must be a number): ");
    scanf("%d", &pass2);

    if(password == pass2)
    {
        printf("welcome %s", name);
    }
    else{
        printf("sorry your passwords did not match!");
    }

}