以下是一个简单的内存文件系统的代码:

#include <stdio.h> #include <stdlib.h> #include <string.h>

#define MAX_FILES 1000 #define MAX_FILE_SIZE 1024

struct file { char name[50]; char* data; int size; };

struct file filesystem[MAX_FILES]; int num_files = 0;

int create_file(char* name) { // Check if file already exists for (int i = 0; i < num_files; i++) { if (strcmp(filesystem[i].name, name) == 0) { printf("File already exists\n"); return -1; } }

// Create new file
if (num_files >= MAX_FILES) {
    printf("Maximum number of files reached\n");
    return -1;
}
struct file new_file;
strcpy(new_file.name, name);
new_file.data = (char*) malloc(MAX_FILE_SIZE);
new_file.size = 0;
filesystem[num_files] = new_file;
num_files++;
printf("File created: %s\n", name);
return 0;

}

int delete_file(char* name) { // Find file to delete int index = -1; for (int i = 0; i < num_files; i++) { if (strcmp(filesystem[i].name, name) == 0) { index = i; break; } } if (index == -1) { printf("File not found\n"); return -1; }

// Delete file
free(filesystem[index].data);
for (int i = index; i < num_files - 1; i++) {
    filesystem[i] = filesystem[i+1];
}
num_files--;
printf("File deleted: %s\n", name);
return 0;

}

int write_file(char* name, char* data, int size) { // Find file to write to int index = -1; for (int i = 0; i < num_files; i++) { if (strcmp(filesystem[i].name, name) == 0) { index = i; break; } } if (index == -1) { printf("File not found\n"); return -1; }

// Write data to file
if (size > MAX_FILE_SIZE) {
    printf("File size too large\n");
    return -1;
}
memcpy(filesystem[index].data, data, size);
filesystem[index].size = size;
printf("Data written to file: %s\n", name);
return 0;

}

int read_file(char* name, char* data, int size) { // Find file to read from int index = -1; for (int i = 0; i < num_files; i++) { if (strcmp(filesystem[i].name, name) == 0) { index = i; break; } } if (index == -1) { printf("File not found\n"); return -1; }

// Read data from file
if (size < filesystem[index].size) {
    printf("Buffer size too small\n");
    return -1;
}
memcpy(data, filesystem[index].data, filesystem[index].size);
printf("Data read from file: %s\n", name);
return 0;

}

int main() { create_file("file1"); write_file("file1", "Hello, world!", 13); char data[50]; read_file("file1", data, 50); printf("%s\n", data); delete_file("file1"); return 0;

参考 ramfs 文件系统实现一个简单的内存文件系统请给出代码

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

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