要求:
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文件