C语言创建窗口登陆 非窗体

1
请问如何才能做到像QQ登陆那样有输入光标闪动并且可以用鼠标点击到指定位置或者用键盘方位键去移动光标到指定位置
2
能够实现输入的删除
3
如何实现账号密码的存储呢?…

请指点一下迷津!…

1.
如果要在 C 语言中创建一个登录窗口,那么您可能需要使用一些特定的窗口管理库,比如 Microsoft Windows API 或 X Window System。这些库可以提供创建窗口、绘制文本、处理用户输入等功能。

举个例子,如果您使用 Microsoft Windows API,那么您可能需要用到函数 CreateWindowEx 来创建一个窗口,用 SetCursorPos 来控制光标位置,用 ShowCursor 来控制光标是否闪动,用 SetFocus 来设置窗口焦点,以及其他一些函数来处理用户的鼠标和键盘输入。

当然,如果您希望能够轻松地实现类似 QQ 登录窗口的效果,那么可能更好的选择是使用一个高层次的图形库,比如 GTK+ 或 Qt。这些库提供了许多预定义的组件,可以轻松地创建各种类型的窗口,包括文本输入框、按钮、菜单等,并且可以方便地处理用户输入和交互。

总之,创建一个类似 QQ 登录窗口的应用程序,需要您了解相关的窗口管理库和图形库,并熟练地使用它们的 API。
2.
您可以使用 C 语言中的 getch() 函数来实现在窗口登录时输入的删除。getch() 函数可以获取用户在终端中输入的一个字符,并且在用户输入字符时不会显示该字符。如果用户输入了一个特殊的键,比如 Backspace 键,那么 getch() 函数会返回对应的 ASCII 码。您可以使用这个 ASCII 码来实现删除功能。

下面是一个简单的示例,它使用 getch() 函数实现了一个简单的窗口登录界面,并且支持删除功能:


#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAX_USERNAME_LEN 20
#define MAX_PASSWORD_LEN 20

int main() {
  char username[MAX_USERNAME_LEN + 1];  // 用户名
  char password[MAX_PASSWORD_LEN + 1];  // 密码

  printf("Enter username: ");
  int username_len = 0;
  int ch;
  while ((ch = getch()) != '\r') {  // 循环读取用户输入的字符
    if (ch == '\b') {  // 如果是退格键,则删除最后一个字符
      if (username_len > 0) {
        username_len--;
        printf("\b \b");  // 将光标移到前一个位置,并将字符擦除
      }
    } else {  // 否则,添加输入的字符到用户名数组中
      if (username_len < MAX_USERNAME_LEN) {
        username[username_len++] = ch;
        putchar(ch);
      }
    }
  }
  username[username_len] = '\0';

  printf("\nEnter password: ");
  int password_len

3.
如果您希望实现一个简单的用户账号和密码系统,那么您可以将用户账号和密码存储在一个文本文件中。每行都存储一个用户的账号和密码,用户名和密码之间用一个特殊的字符(如冒号)隔开。

例如,文件 users.txt 中可能包含以下内容:

alice:123456
bob:qwerty
charlie:abcdef

然后,您可以使用 C 语言中的 fopen() 函数打开这个文件,并使用 fscanf() 函数读取文件中的每一行。您可以将每一行的内容解析成用户名和密码,并与用户输入的账号和密码进行比较。如果用户输入的账号和密码与文件中的账号和密码匹配,那么就说明用户输入了正确的账号和密码,可以允许用户登录。

下面是一个简单的例子,它实现了从文件中读取用户账号和密码的功能:

#include <stdio.h>
#include <string.h>

#define MAX_USERNAME_LEN 20
#define MAX_PASSWORD_LEN 20

int main() {
  // 打开文件
  FILE *file = fopen("users.txt", "r");
  if (file == NULL) {
    printf("Error: Unable to open file\n");
    return 1;
  }

  // 读取文件中的每一行
  char line[MAX_USERNAME_LEN + MAX_PASSWORD_LEN + 2];  //