文章目录
C语言文件I/O相关函数操作
fopen/fcolse
fopen 函数用于打开一个文件,并根据指定的模式(如只读、只写、读写等)返回一个指向该文件的 FILE 类型的指针。如果文件打开失败,fopen 将返回 NULL。
函数原型:
FILE *fopen(const char *filename, const char *mode);
filename:要打开文件的名称(包括路径,如果需要的话)。
mode:指定文件打开的模式。常见的模式有 “r”(只读)、“w”(只写,文件存在则长度被截断为零,即该文件内容会消失;文件不存在则创建新文件)、“a”(追加,写入的数据会被追加到文件尾,如果文件不存在则创建新文件)、“r+”(读写,文件必须存在)、“w+”(读写,同上,但文件内容会被清空)、“a+”(读写,写入的数据会被追加到文件尾)等。
man fopen查看相关信息:
fclose 函数用于关闭一个先前用 fopen 或 fdopen 打开的文件。关闭文件是一个好习惯,可以释放文件相关的资源并确保所有的输出都被正确地写入文件。
函数原型如下:
int fclose(FILE *stream);
stream:指向 FILE 对象的指针,该 FILE 对象标识了要关闭的文件。
fclose 函数在成功时返回 0,在失败时返回 EOF。然而,在大多数实现中,fclose 仅在极少数情况下会失败(如写入文件时磁盘空间不足),并且通常它总是能成功关闭文件。
写文件:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp = fopen("myfile", "w");
if(!fp){
printf("fopen error!\n");
}
const char *msg = "hello bit!\n";
int count = 5;
while(count--){
fwrite(msg, strlen(msg), 1, fp);
}
fclose(fp);
return 0;
}
fwrite
fwrite 函数用于向文件写入数据块。它从一个数组中获取数据,并将数据写入到文件中。与 fprintf 不同的是,fwrite 不对数据进行格式化,而是直接按照数据块的原始形式写入。
函数原型如下:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向要写入的数据块的指针。
size:每个数据块的大小(以字节为单位)。
nmemb:数据块的个数。
stream:指向 FILE 对象的指针,该 FILE 对象标识了要写入数据的文件。
fwrite 返回成功写入的数据块的数量,通常这等于 nmemb 的值,除非发生了错误或达到了文件末尾。
我们用fwrite向myfile中写入:
#include<stdio.h>
#include<string.h>
int main(