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!");
}
}