用C语言设计一个文件系统,对文件的操作设计如下命令(使用菜单选择):creat建立文件,delete删除文件,list文件列表,bye退出
时间: 2024-12-25 09:33:01 浏览: 3
在C语言中设计一个简单的文本文件系统模拟器,你可以创建一个控制台程序,通过菜单驱动用户操作。以下是一个简化的例子,使用结构体表示文件和目录,以及对应的函数来处理各个命令:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[50];
int type; // 0 for file, 1 for directory
} FileSystemNode;
// 文件系统节点数组
FileSystemNode nodes[100];
void createFile(char* fileName) {
if (fileName == NULL || strlen(fileName) == 0)
return;
FILE* f = fopen(fileName, "w");
if (f == NULL) {
printf("Error creating file: %s\n", fileName);
return;
}
fclose(f);
}
void deleteFile(char* fileName) {
if (fileName == NULL || strlen(fileName) == 0)
return;
remove(fileName);
if (errno != ENOENT)
printf("Error deleting file: %s\n", fileName);
}
void listFiles() {
int i;
for (i = 0; i < sizeof(nodes)/sizeof(nodes[0]); i++) {
if (nodes[i].type == 0) {
printf("%d: %s\n", i+1, nodes[i].name);
}
}
}
void mainMenu() {
int choice;
do {
printf("\nChoose an operation:\n");
printf("1. Create a new file\n");
printf("2. Delete a file\n");
printf("3. List files\n");
printf("4. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
char fileName[50];
printf("Enter the filename: ");
fgets(fileName, sizeof(fileName), stdin);
fileName[strlen(fileName)-1] = '\0'; // Remove newline
createFile(fileName);
break;
case 2:
char delFileName[50];
printf("Enter the filename to delete: ");
fgets(delFileName, sizeof(delFileName), stdin);
delFileName[strlen(delFileName)-1] = '\0';
deleteFile(delFileName);
break;
case 3:
listFiles();
break;
case 4:
printf("Exiting...\n");
break;
default:
printf("Invalid choice. Try again.\n");
}
} while (choice != 4);
}
int main() {
mainMenu();
return 0;
}
```
这个程序只是一个基础示例,并未处理所有可能的错误情况,也没有真正的目录结构。在实际应用中,你可能需要使用更复杂的数据结构来存储文件系统,并考虑文件权限、路径等问题。
阅读全文