Linux 写入文件的实现方式

1. Linux 写入文件的实现方式

在 Linux 中,写入文件是一项常见且重要的操作。通过将数据写入文件,我们可以将程序的输出结果保存下来,或者将配置信息写入到配置文件中。本文将介绍 Linux 中常用的几种写入文件的实现方式。

1.1 fwrite 函数

fwrite 函数是 C 语言标准库中提供的一个用于写入数据到文件的函数。该函数的原型如下:

size_t fwrite (const void *ptr, size_t size, size_t count, FILE *stream);

其中,ptr 是要写入的数据的起始地址,size 是每个数据项的字节数,count 是要写入的数据项的个数,stream 是指向要写入的文件的指针。该函数的返回值是成功写入的数据项的个数。

fwrite 函数可以用来写入二进制数据或者文本数据。下面是一个使用 fwrite 函数将数据写入到文件的示例:

#include<stdio.h>

int main() {

FILE *fp;

int data[] = {10, 20, 30, 40, 50};

int num_items = sizeof(data) / sizeof(int);

fp = fopen("data.bin", "wb");

if (fp == NULL) {

printf("Error opening file\n");

return -1;

}

if (fwrite(data, sizeof(int), num_items, fp) != num_items) {

printf("Error writing to file\n");

}

fclose(fp);

return 0;

}

在上述代码中,我们首先定义了一个整型数组 data,然后计算了数组的项数 num_items。接着,我们使用 fopen 函数打开了一个名为 data.bin 的二进制文件,并将文件指针保存到了 fp 变量中。然后,我们使用 fwrite 函数将 data 数组中的数据写入到了文件中,最后使用 fclose 函数关闭了文件。

上述代码会将整型数组 data 中的数据以二进制形式写入到 data.bin 文件中。如果写入成功,fwrite 函数会返回值等于 num_items。否则,它会返回一个小于 num_items 的值。

1.2 fprintf 函数

fprintf 函数是 C 语言标准库中提供的一个用于格式化输出到文件的函数。该函数的原型如下:

int fprintf (FILE *stream, const char *format, ...);

其中,stream 是指向要写入的文件的指针,format 是一个格式字符串,后续的参数是传递给格式字符串的值。该函数的返回值是成功写入的字符数。

下面是一个使用 fprintf 函数将数据写入到文件的示例:

#include<stdio.h>

int main() {

FILE *fp;

int data[] = {10, 20, 30, 40, 50};

int num_items = sizeof(data) / sizeof(int);

int i;

fp = fopen("data.txt", "w");

if (fp == NULL) {

printf("Error opening file\n");

return -1;

}

for (i = 0; i < num_items; ++i) {

fprintf(fp, "%d ", data[i]);

}

fclose(fp);

return 0;

}

在上述代码中,我们使用 fopen 函数打开了一个名为 data.txt 的文本文件,并将文件指针保存到了 fp 变量中。然后,我们使用 fprintf 函数将整型数组 data 中的数据以格式化的方式写入到了文件中。最后,我们使用 fclose 函数关闭了文件。

上述代码会将整型数组 data 中的数据以字符串的形式写入到 data.txt 文件中,并使用空格作为分隔符。

1.3 write 函数

write 函数是用于写入数据到文件的系统调用函数。它的声明在头文件 unistd.h 中,原型如下:

ssize_t write (int fd, const void *buf, size_t count);

其中,fd 是要写入的文件的文件描述符,buf 是要写入的数据的起始地址,count 是要写入的数据的字节数。该函数的返回值是成功写入的字节数。

下面是一个使用 write 函数将数据写入到文件的示例:

#include<fcntl.h>

#include<unistd.h>

int main() {

int fd;

int data[] = {10, 20, 30, 40, 50};

int num_items = sizeof(data) / sizeof(int);

fd = open("data.bin", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);

if (fd == -1) {

printf("Error opening file\n");

return -1;

}

if (write(fd, data, sizeof(int) * num_items) != sizeof(int) * num_items) {

printf("Error writing to file\n");

}

close(fd);

return 0;

}

在上述代码中,我们使用 open 函数打开一个名为 data.bin 的文件,并将文件描述符保存到了 fd 变量中。然后,我们使用 write 函数将整型数组 data 中的数据以二进制形式写入到了文件中。最后,我们使用 close 函数关闭了文件。

上述代码与使用 fwrite 函数的示例代码类似,都是将整型数组 data 中的数据以二进制形式写入到 data.bin 文件中。不同之处在于使用了不同的写入函数。

2. 总结

本文介绍了 Linux 中常用的几种写入文件的实现方式。我们首先讲解了 fwrite 函数,它是 C 语言标准库中提供的一个用于写入数据到文件的函数。然后,我们介绍了 fprintf 函数,它是用于格式化输出到文件的函数。最后,我们介绍了 write 函数,它是用于写入数据到文件的系统调用函数。

无论是在 C 语言还是在 Shell 脚本中,写入文件都是一个常见的操作。熟练掌握不同的写入文件的实现方式,有助于我们更好地处理文件操作。

操作系统标签