用C语言打开文件的几种方式及区别

您所在的位置:网站首页 若要用fopen函数以读的方式打开二进制文件 用C语言打开文件的几种方式及区别

用C语言打开文件的几种方式及区别

2024-06-03 09:05| 来源: 网络整理| 查看: 265

文件使用方式含义如果指定的文件不存在r(只读)读取一个已经存在的文本文件出错w(只写)打开一个文本文件,输出数据,若文件存在则文件长度清为0,即该文件内容会消失建立新文件a (追加)向文本文件末尾添加数据,原来文件中的数据保留,新的数据添加到文件为,原文件EOF保留建立新文件rb(只读)读取一个二进制文件出错wb(只写)打开一个二进制文件,输出数据,若文件存在则文件长度清为0,即该文件内容会消失建立新文件ab (追加)向二进制文件尾添加数据建立新文件r+ (读写)对一个文本文件进行读写操作出错w+ (读写)对一个文本文件进行读写操作,若文件存在则文件长度清为0,即该文件内容会消失建立新文件a+(读写)向文本文件末尾添加数据,原来文件中的数据保留,新的数据添加到文件尾,原文件EOF不保留建立新文件rb+ (读写)读写一个二进制文件出错wb+ (读写)对一个二进制文件进行读写操作,若文件存在则文件长度清为0,即该文件内容会消失建立新文件ab+(读写)向二进制文件末尾添加数据,原来文件中的数据保留,新的数据添加到文件尾建立新文件

r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;

w+也具有读写属性,写的时候如果文件存在,会被清空,从头开始写。

先读后写先写后读的问题

再用C语言对文件先读后写或者先写后读时,一定要注意文件指针的位置情况。不然可能导致本该重写的以追加方式写入等错误。

e.g.

The output of the follwing code is supposed to be: (and it is with gcc on linux) num:10 ret:1 num:30 ret:1 ==========++ 10 ## 30 40 But instead it completely ignores the overwrite and only moves the file pointer and the output comes out as: num:10 ret:1 num:30 ret:1 ============ 10 20 30 40 however if the two lines for the first fscanf and printf are commented, the output becomes: num:20 ret:1 ============ ## 20 30 40 Why? */ #define _CRT_SECURE_NO_WARNINGS #include int main(void) { FILE* fptr; int num,ret, ch; fptr = fopen("data.txt", "w"); // creating data.txt file: 10\n20\n30\n40\n for (num = 1; num


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3