编写了一个读取密码的代码,并在您按 Enter 时将其打印出来。提供退格
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(void){
SetConsoleCP (1251);
SetConsoleOutputCP (1251);
char password[100],c;
int i;
i=0;
while ((password[i]=getch())!='\r'){
if (password[i]=='\b' && i!=0){
printf("%s", "\b \b");
i--;
continue;
}
printf("%c", '*');
i++;
}
printf("\npassword is %s\n", password);
return 0;
}
问题在结论中。
Вывод при пароле "qwe"(звездочки это еще ввод самого пароля)
***
\
r╗Мюad is qwe
.
Вывод при пароле qwerty
******
╗Мюaword is qwerty
.
Вывод при пароле qwertyuiop
**********
password is qwertyuiop
无论是否使用退格,输出都不会改变。你能提出什么问题吗?
诀窍是通过这个条件 (password[i]=getch())!='\r') 你保存最后一个字符 / r - 也就是说,一个回车并重写单词密码的某些部分,当有更多字符,回车稍后发生