目录
一、C语言文件操作
在C语言中我们想要打开一个文件并对其进行读取写入等各种操作,需要依赖于fopen、fread、fwrite等函数。我们先来回顾一下这些函数
1.1 fopen和fclose
其中:
- path:目标文件的路径
- mode:文件的打开模式
文件的打开模式中,r表示只读,w表示只写,a表示追加,还有很多模式相信对大家来说都不陌生
fopen如果打开文件成功,会返回一个FILE*指针,其中FILE结构体是C库自己封装的结构体,内部封装了文件的各种属性
一个文件被打开后,如果我们不需要使用该文件了,就需要使用fclose关闭它,向函数传入先前从fopen接收到的FILE*指针即可。
1.2 fwrite和fread
其中:
- ptr:指向某一内存块的指针
- size:要读取/写入的元素大小
- nmemb:要读取/写入的元素个数
- stream:文件指针
所以读取或写入的字节总数为size*nmemb
我们可以用fwrite对一个文件进行写入,例如:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp = fopen("myfile", "w");
if(!fp)
{
printf("fopen error!\n");
}
const char *str = "hello Linux\n";
fwrite(str, strlen(str), 1, fp);
fclose(fp);
return 0;
}
运行代码,可以看到已经写入成功了
我们还可以用fread读取一个文件的内容,例如:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main()
{
FILE *fp = fopen("myfile", "r");
if(!fp)
{
printf("fopen error!\n");
}
char buf[1024];
ssize_t s = fread(buf, 1, sizeof(buf), fp);
if(s)
{
buf[s] = '\0';
printf("%s", buf);
}
fclose(fp);
return 0;
}
fread如果读取成功,会返回读取的元素总数,与nmemb个数相同
运行代码,可以发现之前写入到myfile文件中的内容已经被读取出来了