请用C语言编写一个文件管理系统
时间: 2023-09-21 15:10:03 浏览: 36
作为AI语言模型,我无法编写实际的程序。不过,我可以提供一个简单的文件管理系统的伪代码,希望能够帮助你了解其基本架构和功能。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FILENAME_LEN 100
#define MAX_FILE_NUM 100
struct file {
char filename[MAX_FILENAME_LEN];
int size;
char* content;
};
struct file files[MAX_FILE_NUM];
int file_num = 0;
void create_file(char* filename) {
if (file_num >= MAX_FILE_NUM) {
printf("Failed to create file: too many files exist.\n");
return;
}
for (int i = 0; i < file_num; i++) {
if (strcmp(files[i].filename, filename) == 0) {
printf("Failed to create file: file with the same name already exists.\n");
return;
}
}
struct file new_file;
strcpy(new_file.filename, filename);
new_file.size = 0;
new_file.content = NULL;
files[file_num] = new_file;
file_num++;
printf("File created successfully.\n");
}
void delete_file(char* filename) {
int file_index = -1;
for (int i = 0; i < file_num; i++) {
if (strcmp(files[i].filename, filename) == 0) {
file_index = i;
break;
}
}
if (file_index == -1) {
printf("Failed to delete file: file not found.\n");
return;
}
free(files[file_index].content);
for (int i = file_index; i < file_num - 1; i++) {
files[i] = files[i+1];
}
file_num--;
printf("File deleted successfully.\n");
}
void read_file(char* filename) {
int file_index = -1;
for (int i = 0; i < file_num; i++) {
if (strcmp(files[i].filename, filename) == 0) {
file_index = i;
break;
}
}
if (file_index == -1) {
printf("Failed to read file: file not found.\n");
return;
}
printf("File content:\n%s\n", files[file_index].content);
}
void write_file(char* filename, char* content) {
int file_index = -1;
for (int i = 0; i < file_num; i++) {
if (strcmp(files[i].filename, filename) == 0) {
file_index = i;
break;
}
}
if (file_index == -1) {
printf("Failed to write file: file not found.\n");
return;
}
if (files[file_index].content != NULL) {
free(files[file_index].content);
}
int content_len = strlen(content);
files[file_index].content = (char*) malloc(sizeof(char) * (content_len+1));
strcpy(files[file_index].content, content);
files[file_index].size = content_len;
printf("File written successfully.\n");
}
int main() {
while (1) {
printf("Please enter the command: ");
char command[10];
scanf("%s", command);
if (strcmp(command, "create") == 0) {
char filename[MAX_FILENAME_LEN];
scanf("%s", filename);
create_file(filename);
} else if (strcmp(command, "delete") == 0) {
char filename[MAX_FILENAME_LEN];
scanf("%s", filename);
delete_file(filename);
} else if (strcmp(command, "read") == 0) {
char filename[MAX_FILENAME_LEN];
scanf("%s", filename);
read_file(filename);
} else if (strcmp(command, "write") == 0) {
char filename[MAX_FILENAME_LEN];
char content[1000];
scanf("%s", filename);
getchar(); // consume the newline character
fgets(content, 1000, stdin);
write_file(filename, content);
} else if (strcmp(command, "exit") == 0) {
break;
} else {
printf("Invalid command. Please try again.\n");
}
}
return 0;
}
```
这是一个简单的命令行文件管理系统,支持创建、删除、读取和写入文件。用户可以通过键盘输入命令,并根据需要提供文件名和文件内容。程序使用一个`struct`数组来存储所有文件的信息。每个文件都有一个文件名、文件大小和文件内容。在创建和写入文件时,程序会动态分配内存以存储文件内容。在删除文件时,程序会释放文件内容的内存。