scanf()未按预期工作

scanf()未按预期工作,c,C,我在写一个密码检查程序。我遇到了一个问题。 当我运行程序时,所有内容都以纯文本形式打印出来,而不允许用户输入。我也曾尝试运行以前运行过的其他程序,但它们都有相同的问题。以下是我的代码和问题的图像: #包括 main() { int密码,pass2; 字符名; printf(“\n输入您的姓名:”); scanf(“%c”、&name); printf(“\n输入密码(必须是数字):”; scanf(“%d,&password”); printf(“\n重新输入密码(必须是数字):”; scanf

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

#包括
main()
{
int密码,pass2;
字符名;
printf(“\n输入您的姓名:”);
scanf(“%c”、&name);
printf(“\n输入密码(必须是数字):”;
scanf(“%d,&password”);
printf(“\n重新输入密码(必须是数字):”;
scanf(“%d,&pass2”);
如果(“密码==pass2”)
{
printf(“欢迎%c”,名称);
}
否则{
printf(“对不起,您的密码不匹配!”);
}
getch();

}你犯了一些错误

scanf("%d, &password");
调用scanf的正确方法如下

 scanf ( const char * format, ... );
这一行用C编码的正确方法是

scanf("%d", &password);
第15行也有一个错误

if("password == pass2")
比较数字的正确方法是

if(password == pass2)
字符问题。

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

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

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


学习中出现一些错误是正常的,你可以在

对于更“指导性”的方法,您也可以检查此项


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

#包括
int main(){
int密码,pass2;
字符名[20];
printf(“\n输入您的姓名:”);
scanf(“%s”,名称);
printf(“\n输入密码(必须是数字):”;
scanf(“%d”和密码);
printf(“\n重新输入密码(必须是数字):”;
scanf(“%d”、&pass2);
如果(密码==pass2)
{
printf(“欢迎%s”,名称);
}
否则{
printf(“对不起,您的密码不匹配!”);
}
}

这看起来不需要图像。只需将程序的输出以纯文本形式复制到您的帖子中(格式为
code
)。尽管这行代码看起来很恶心,建议你再看一本C编程书。你知道字符的意思是一个字符,对吗?您打算如何在其中存储名称?@M.M我发现了,那么我可以使用什么来存储名称呢?养成使用所有警告和调试信息(
gcc-Wall-Wextra-g
)编译的习惯,并使用调试器(
gdb
)逐步运行您的程序(或使用断点等),了解计算机在做什么。另外,花几天时间阅读一些关于C编程的好书(甚至是一般的编程,例如……);你看起来很困惑;最后,如果您可以复制和粘贴代码(&output),请避免放置图像。谢谢您的回答,但我仍然遇到了相同的问题,当他键入图像中的
node
时,将
n
读入变量
name
-留下
ode
,由下一个
scanf()
将其解释为一个数字。这将失败-两次,快速连续,用户不再输入任何内容。无法保证两个未初始化变量
password
pass2
是否包含相同的值。代码需要
字符名[50]
if(scanf(“%49s”,name)!=1){…进程错误…}
(注意这里没有
&
)和
if(scanf(“%d”)和密码)!=1{…进程错误…}
和类似的
pass2
。我测试得不好,我重写了答案,现在应该可以正常工作了。使用
scanf(“%s”,name)
获取(名称)
一样安全。建议使用
fgets()
if(password == pass2)
#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!");
    }

}