C语言添加修改账号密码
时间: 2023-08-11 20:17:56 浏览: 73
C# 修改密码
4星 · 用户满意度95%
要添加和修改账号密码,你需要使用文件操作函数来读取和写入账号密码信息。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 50 // 假设账号密码的最大长度为50
typedef struct {
char account[MAX_LEN];
char password[MAX_LEN];
} User;
void add_user(User user) {
FILE *fp;
fp = fopen("users.txt", "a"); // 打开文件,以追加方式写入
if (fp == NULL) {
printf("Failed to open file.\n");
exit(1);
}
fprintf(fp, "%s %s\n", user.account, user.password); // 写入账号和密码
fclose(fp); // 关闭文件
}
void update_user(User user) {
FILE *fp;
fp = fopen("users.txt", "r"); // 打开文件,以读取方式打开
if (fp == NULL) {
printf("Failed to open file.\n");
exit(1);
}
FILE *fp_tmp;
fp_tmp = fopen("tmp.txt", "w"); // 打开一个临时文件,以写入方式打开
if (fp_tmp == NULL) {
printf("Failed to open file.\n");
exit(1);
}
char line[MAX_LEN * 2 + 2]; // 假设每一行的最大长度为 MAX_LEN * 2 + 2,即账号密码之间有一个空格和一个换行符
char account[MAX_LEN];
int found = 0; // 是否找到用户的标志
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%s", account); // 读取每一行的账号
if (strcmp(account, user.account) == 0) { // 找到了用户
fprintf(fp_tmp, "%s %s\n", user.account, user.password); // 写入修改后的账号密码信息
found = 1;
} else {
fprintf(fp_tmp, "%s", line); // 将原来的账号密码信息写入临时文件
}
}
if (!found) { // 没有找到用户
fprintf(fp_tmp, "%s %s\n", user.account, user.password); // 直接将新账号密码信息写入临时文件
}
fclose(fp); // 关闭原文件
fclose(fp_tmp); // 关闭临时文件
remove("users.txt"); // 删除原文件
rename("tmp.txt", "users.txt"); // 将临时文件重命名为原文件
}
int main() {
User user;
strcpy(user.account, "Alice");
strcpy(user.password, "123456");
add_user(user); // 添加一个用户
strcpy(user.password, "654321");
update_user(user); // 修改用户密码
return 0;
}
```
上面的代码使用了两个函数来添加和修改账号密码信息。`add_user` 函数接收一个 `User` 结构体作为参数,将账号密码信息写入文件。`update_user` 函数也接收一个 `User` 结构体作为参数,读取文件中的账号密码信息,找到需要修改的账号,将其密码修改后,将所有账号密码信息写入一个临时文件,最后将原文件删除,将临时文件重命名为原文件。
需要注意的是,上述代码中的文件名为 `users.txt`,修改时需要根据实际情况修改。
阅读全文