【发布时间】:2021-09-06 07:42:42
【问题描述】:
#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]='\0';
if(strcmp(pwd,"abcd")==0)
{
printf("\nPassword is correct");
}
else
{
printf("\nPassword is not correct");
}
return 0;
}
我希望以这样的形式输出,当用户按下退格键时,前一个字符应该被删除,并且应该允许用户重新输入前一个字符,但是这段代码有一些问题。 它删除了前一个字符,但不允许重新输入前一个更正的字符,而是将其作为下一个字符,请问这段代码有什么问题?
【问题讨论】:
-
一个问题是使用支持
dos.h和conio.h的过时C 编译器——你应该升级到当前千年的东西,而不是使用千年之交的史前版本。 -
您的代码对输入时的反斜杠字符没有什么特别的作用。您检测到退格字符(很糟糕——您应该使用
'\b'而不是 8),但这与反斜杠字符非常不同。 -
请进一步解释“当我输入行为异常时”的含义。什么是“东西”?您遇到了什么样的不当行为?
-
请edit解释。
-
旁白:请将换行符放在邮件的末尾,而不是开头,例如
printf("Password is correct\n");
标签: arrays c function if-statement decrement