#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n#define MAX_NAME_LENGTH 50\n#define MAX_INTRO_LENGTH 100\n\n// 定义人物结构体\ntypedef struct {\n char name[MAX_NAME_LENGTH];\n char intro[MAX_INTRO_LENGTH];\n} Character;\n\n// 函数声明\nvoid scanFiles();\nvoid displayMenu();\nvoid showCharacterInfo(Character character);\nvoid addCharacter();\nvoid deleteCharacter();\nvoid renameCharacter();\n\nint main() {\n scanFiles();\n displayMenu();\n\n return 0;\n}\n\n// 扫描文件并显示人物名称\nvoid scanFiles() {\n FILE *dir;\n char filename[MAX_NAME_LENGTH];\n int count = 0;\n\n dir = opendir("avatar");\n if (dir == NULL) {\n printf("未找到人物档案文件夹\n");\n return;\n }\n\n // 遍历文件夹内的文件,并显示人物名称\n struct dirent *entry;\n while ((entry = readdir(dir)) != NULL) {\n if (entry->d_type == DT_REG) {\n strncpy(filename, entry->d_name, MAX_NAME_LENGTH);\n filename[strlen(filename) - 4] = '\0'; // 去掉文件后缀名\n printf("%d. %s\n", count + 1, filename);\n count++;\n }\n }\n\n if (count == 0) {\n printf("未找到人物档案文件\n");\n }\n\n closedir(dir);\n}\n\n// 显示功能菜单\nvoid displayMenu() {\n int choice;\n\n while (1) {\n printf("\n请选择操作:\n");\n printf("1. 在档查询\n");\n printf("2. 人物信息\n");\n printf("3. 人物删除\n");\n printf("4. 人物更名\n");\n printf("5. 退出程序\n");\n printf("请输入选项:");\n scanf("%d", &choice);\n\n switch (choice) {\n case 1:\n scanFiles();\n break;\n case 2:\n showCharacterInfo();\n break;\n case 3:\n deleteCharacter();\n break;\n case 4:\n renameCharacter();\n break;\n case 5:\n exit(0);\n default:\n printf("无效选项,请重新输入\n");\n break;\n }\n }\n}\n\n// 显示人物信息\nvoid showCharacterInfo() {\n char name[MAX_NAME_LENGTH];\n char filename[MAX_NAME_LENGTH + 4];\n FILE *file;\n Character character;\n\n printf("请输入人物名称:");\n scanf("%s", name);\n\n // 打开对应的文件并读取人物信息\n sprintf(filename, "avatar/%s.txt", name);\n file = fopen(filename, "r");\n if (file == NULL) {\n printf("未找到该人物档案\n");\n return;\n }\n\n fread(&character, sizeof(Character), 1, file);\n printf("%s的介绍:%s\n", character.name, character.intro);\n\n fclose(file);\n}\n\n// 添加人物\nvoid addCharacter() {\n char name[MAX_NAME_LENGTH];\n char filename[MAX_NAME_LENGTH + 4];\n FILE *file;\n Character character;\n\n printf("请输入人物名称:");\n scanf("%s", character.name);\n\n // 检查文件是否已存在\n sprintf(filename, "avatar/%s.txt", character.name);\n file = fopen(filename, "r");\n if (file != NULL) {\n printf("该人物档案已存在\n");\n fclose(file);\n return;\n }\n\n printf("请输入人物介绍(不少于50字):");\n scanf("%s", character.intro);\n\n // 创建新文件并保存人物信息\n file = fopen(filename, "w");\n if (file == NULL) {\n printf("无法创建人物档案\n");\n return;\n }\n\n fwrite(&character, sizeof(Character), 1, file);\n fclose(file);\n\n printf("人物档案创建成功\n");\n}\n\n// 删除人物档案\nvoid deleteCharacter() {\n char name[MAX_NAME_LENGTH];\n char filename[MAX_NAME_LENGTH + 4];\n\n printf("请输入要删除的人物名称:");\n scanf("%s", name);\n\n // 删除对应的文件\n sprintf(filename, "avatar/%s.txt", name);\n if (remove(filename) == 0) {\n printf("人物档案删除成功\n");\n } else {\n printf("未找到该人物档案\n");\n }\n}\n\n// 重命名人物档案\nvoid renameCharacter() {\n char oldName[MAX_NAME_LENGTH];\n char newName[MAX_NAME_LENGTH];\n char oldFilename[MAX_NAME_LENGTH + 4];\n char newFilename[MAX_NAME_LENGTH + 4];\n\n printf("请输入原人物名称:");\n scanf("%s", oldName);\n\n // 检查文件是否已存在\n sprintf(oldFilename, "avatar/%s.txt", oldName);\n FILE *oldFile = fopen(oldFilename, "r");\n if (oldFile == NULL) {\n printf("未找到该人物档案\n");\n return;\n }\n fclose(oldFile);\n\n printf("请输入新人物名称:");\n scanf("%s", newName);\n\n // 检查新文件名是否已存在\n sprintf(newFilename, "avatar/%s.txt", newName);\n FILE *newFile = fopen(newFilename, "r");\n if (newFile != NULL) {\n printf("该人物档案已存在\n");\n fclose(newFile);\n return;\n }\n\n // 重命名文件\n if (rename(oldFilename, newFilename) == 0) {\n printf("人物档案重命名成功\n");\n } else {\n printf("人物档案重命名失败\n");\n }\n


原文地址: https://www.cveoy.top/t/topic/pqKe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录