当我 运行 代码没有给出所需的输出时,这段代码有什么问题
What is the problem in this code when I run the code it does not give the desired output
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char pwd[5];
int i;
printf("Enter your password: ");
for(i=0;i<=3;i++)
{
pwd[i]=_getch();
printf("%c",pwd[i]);
if(pwd[i]==8)
{
if(i>0)
{
printf(" \b");
i--;
continue;
}
else
break;
}
}
pwd[i]='[=11=]';
if(strcmp(pwd,"abcd")==0)
{
printf("\nPassword is correct");
}
else
{
printf("\nPassword is not correct");
}
return 0;
}
我想要这样的输出形式,当用户按下退格键时,应该删除前一个字符,并且应该允许用户重新输入前一个字符,但是这段代码有一些问题。
它会删除前一个字符,但不允许重新输入前一个更正后的字符,而是将其作为下一个字符此代码有什么问题请解释一下?
此代码中存在错误。在 if (i > 0)
语句的第 18 行,您将变量 i
的值减 1,这没问题。但是,你并不是在“重新输入” pwd[i].
并且请记住,将 '\b' 添加到你的字符串中并不会删除它的前一个字符。它宁愿“添加”一个新角色,但输出结果让你不知所措。所以这是修复了错误的工作代码:
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char pwd[5];
int i;
printf("Enter your password: ");
for(i=0; i<=3; i++)
{
label:
pwd[i]=_getch();
printf("%c",pwd[i]);
if(pwd[i]==8)
{
if(i>0)
{
printf(" \b");
i--;
goto label;
continue;
}
else
break;
}
}
pwd[i]='[=10=]';
if(strcmp(pwd,"abcd")==0)
{
printf("\nPassword is correct");
}
else
{
printf("\nPassword is not correct");
}
return 0;
}
我想我的解释已经足够了。剩下的就是你慢慢来理解代码了。编码愉快!
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char pwd[5];
int i;
printf("Enter your password: ");
for(i=0;i<=3;i++)
{
pwd[i]=_getch();
printf("%c",pwd[i]);
if(pwd[i]==8)
{
if(i>0)
{
printf(" \b");
i--;
continue;
}
else
break;
}
}
pwd[i]='[=11=]';
if(strcmp(pwd,"abcd")==0)
{
printf("\nPassword is correct");
}
else
{
printf("\nPassword is not correct");
}
return 0;
}
我想要这样的输出形式,当用户按下退格键时,应该删除前一个字符,并且应该允许用户重新输入前一个字符,但是这段代码有一些问题。 它会删除前一个字符,但不允许重新输入前一个更正后的字符,而是将其作为下一个字符此代码有什么问题请解释一下?
此代码中存在错误。在 if (i > 0)
语句的第 18 行,您将变量 i
的值减 1,这没问题。但是,你并不是在“重新输入” pwd[i].
并且请记住,将 '\b' 添加到你的字符串中并不会删除它的前一个字符。它宁愿“添加”一个新角色,但输出结果让你不知所措。所以这是修复了错误的工作代码:
#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
char pwd[5];
int i;
printf("Enter your password: ");
for(i=0; i<=3; i++)
{
label:
pwd[i]=_getch();
printf("%c",pwd[i]);
if(pwd[i]==8)
{
if(i>0)
{
printf(" \b");
i--;
goto label;
continue;
}
else
break;
}
}
pwd[i]='[=10=]';
if(strcmp(pwd,"abcd")==0)
{
printf("\nPassword is correct");
}
else
{
printf("\nPassword is not correct");
}
return 0;
}
我想我的解释已经足够了。剩下的就是你慢慢来理解代码了。编码愉快!