请给我实现下列功能的代码 从.csv文件中读取用户(id、用户名、密码、联系方式等)信息 • 以结构体链表的方式加载到内存中 • 实现用户信息的增、删、改、查 • 将修改后的用户信息写入.csv文件。
时间: 2024-04-10 19:33:22 浏览: 73
当然可以,下面是一个示例代码,实现了从CSV文件中读取用户信息,并以结构体链表的方式加载到内存中,实现了用户信息的增、删、改、查,并将修改后的用户信息写入CSV文件。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义用户结构体
typedef struct {
int id;
char username[50];
char password[50];
char contact[50];
} User;
// 定义链表节点结构体
typedef struct Node {
User user;
struct Node* next;
} Node;
Node* head = NULL;
// 从CSV文件中读取用户信息
void loadUsersFromCSV(const char* filename) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件\n");
return;
}
char line[256];
while (fgets(line, sizeof(line), file)) {
User user;
sscanf(line, "%d,%[^,],%[^,],%[^\n]", &user.id, user.username, user.password, user.contact);
addUser(user);
}
fclose(file);
}
// 将用户信息写入CSV文件
void saveUsersToCSV(const char* filename) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
printf("无法打开文件\n");
return;
}
Node* current = head;
while (current != NULL) {
fprintf(file, "%d,%s,%s,%s\n", current->user.id, current->user.username, current->user.password, current->user.contact);
current = current->next;
}
fclose(file);
}
// 添加用户
void addUser(User user) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->user = user;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
} else {
Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 删除用户
void deleteUser(int id) {
Node* current = head;
Node* prev = NULL;
while (current != NULL) {
if (current->user.id == id) {
if (prev == NULL) {
head = current->next;
} else {
prev->next = current->next;
}
free(current);
return;
}
prev = current;
current = current->next;
}
printf("找不到指定的用户\n");
}
// 修改用户信息
void updateUser(int id, User newUser) {
Node* current = head;
while (current != NULL) {
if (current->user.id == id) {
current->user = newUser;
return;
}
current = current->next;
}
printf("找不到指定的用户\n");
}
// 查询用户信息
void findUser(int id) {
Node* current = head;
while (current != NULL) {
if (current->user.id == id) {
printf("ID:%d\n", current->user.id);
printf("用户名:%s\n", current->user.username);
printf("密码:%s\n", current->user.password);
printf("联系方式:%s\n", current->user.contact);
return;
}
current = current->next;
}
printf("找不到指定的用户\n");
}
int main() {
// 从CSV文件加载用户信息
loadUsersFromCSV("users.csv");
// 执行操作
// ...
// 将修改后的用户信息写入CSV文件
saveUsersToCSV("users.csv");
return 0;
}
```
请注意,这只是一个示例,你可能需要根据实际需求进行适当的修改和扩展。同时,请确保CSV文件的格式与代码中的解析方式相匹配。
阅读全文