【Linux】开发环境及文件系统

发布于:2025-07-13 ⋅ 阅读:(17) ⋅ 点赞:(0)

要求:

1、在虚拟机中创建新的磁盘,使用fdisk分区,使用mkfs格式化, 并挂载到系统中。

2、用C语言编程,打开指定文件,将文件内容倒序后再写入新的文 件。

代码实现:

使用fdisk 分区

sudo fdisk /dev/sdb

使用 mkfs 格式化

sudo mkfs.ext4 /dev/sdb1

挂载到系统中

sudo mkdir -p /mnt/mydisk

sudo mount /dev/sdb1 /mnt/mydisk

df -h | frep sdb1

下面代码将input文件内容倒序后存入output中

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

#define BUFFER_SIZE 1024

void reverse_string(char *str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = temp;
    }
}

int main(int argc, char *argv[]) {
    if (argc != 3) {
        fprintf(stderr, "Usage: %s <input_file> <output_file>\n", argv[0]);
        return EXIT_FAILURE;
    }

    FILE *input_file = fopen(argv[1], "r");
    if (!input_file) {
        perror("Error opening input file");
        return EXIT_FAILURE;
    }

    FILE *output_file = fopen(argv[2], "w");
    if (!output_file) {
        perror("Error opening output file");
        fclose(input_file);
        return EXIT_FAILURE;
    }

    char buffer[BUFFER_SIZE];
    size_t buffer_used = 0;
    char *content = NULL;
    size_t content_size = 0;

    while (fgets(buffer, BUFFER_SIZE, input_file)) {
        size_t new_size = content_size + strlen(buffer);
        char *new_content = realloc(content, new_size + 1); // +1 for null terminator
        if (!new_content) {
            perror("Error reallocating memory");
            fclose(input_file);
            fclose(output_file);
            free(content);
            return EXIT_FAILURE;
        }
        strcpy(new_content + content_size, buffer);
        content = new_content;
        content_size = new_size;
    }

    content[content_size] = '\0';

    reverse_string(content);

    fputs(content, output_file);

    fclose(input_file);
    fclose(output_file);
    free(content);

    return EXIT_SUCCESS;
}

结果截图:

创建新磁盘

使用fdisk分区:在使用sudo命令时发现该用户没有足够的权限,于是以root身份登录赋予了该用户使用命令的权限,最后解决了使用fdisk进行分区的问题。

格式化:

挂载到系统中:

input文件和output文件

执行程序后的input和output文件


网站公告

今日签到

点亮在社区的每一天
去签到