我在C编程,对此感到疑惑。
假设有一个简单的程序:
Username:
Password:
现在...看起来很简单,而且打印都很简单(
printf("Username: \nPassword: ");
)但是如何获取用户名字符串? fgets当然可以,但是...我希望用户在“ Username:”之后而不是在密码之后键入它。您可以执行
printf("\b");
删除同一行中以前写入的数据,但是如何到达“用户名:”?删除“ Password:”后,“ \ b”无用,对于回车显然同样如此。我怎么做? 最佳答案
如果是Windows,则可以这样移动光标:
#include <stdio.h>
#include <windows.h>
void setCursorPos(int x, int y)
{
HANDLE hStdout;
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdout, &csbiInfo);
csbiInfo.dwCursorPosition.X = x;
csbiInfo.dwCursorPosition.Y = y;
SetConsoleCursorPosition(hStdout, csbiInfo.dwCursorPosition);
}
int _tmain(int argc, _TCHAR* argv[])
{
system("cls");
char user[128], pass[128];
printf("Username:\r\nPassword:\r\n");
setCursorPos(10, 0);
fgets(user, 128, stdin);
setCursorPos(10, 1);
fgets(pass, 128, stdin);
printf("User = %s, Pass = %s\r\n", user, pass);
return 0;
}
关于c - 如何删除C中上述各行中的书面文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21661866/