打開文件的函數原型
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;
}