打开文件的函数原型
FILE *fopen( const char * filename, const char * mode );
读、写文件的几种模式
模式 | 描述 |
r(read) | 具有文件的读权限。 |
w(write) | 具有文件的写权限。 |
a(append) | 在文件的末端添加数据。 |
b(binary) | 文件的类型为二进制文件。 |
t(text) | 文件的类型为文本文件。 |
+ | 具有文件的读写权限。 |
- r:以只读的方式打开文件,如果文件不存在,则返回NULL。
- r+:以读写的方式打开文件,如果文件不存在,则返回NULL。
- a:追加文件并进行写操作,如果文件不存在,就创建文件,否则新增的内容被添加到文件的末端。
- rt:以读方式打开一个文本文件。
- wt:以写方式打开打开一个文本文件,如果文件不存在,则新建该文件。
- rt+:以读写方式打开一个文本文件
- wt+:以读写方式打开一个文本文件,如果文件不存在,则新建该文件。
如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
例子:以只读的方式读取文本文件,并且过滤其中没有内容的行。
#include <stdio.h>
#include <string.h>
#define BufferLen 256
// 读写文件
int main()
{
FILE* fp = NULL;
// 只允许读文件// 打开文件
fopen_s(&fp,"work.txt", "r");
char buffer[BufferLen];
// 判断文件是否结束
while (!feof(fp))
{
// 每次读取之前将buffer置为空
memset(buffer,'\0', BufferLen * sizeof(char));
// 读取出来的buffer会默认在最后一位加'\0'
fgets(buffer, BufferLen, fp);
// 所以读取的文件如果其中一行为空,则默认其长度为1
// 过滤其中没有内容的行
size_t len = strlen(buffer);
if (len == 1)continue;
printf("work contexts: %s", buffer);
}
// 关闭文件
fclose(fp);
return 0;
}