c语言不用打开方式的应用程序,C语言文件打开方式

fopen打开模式

r 以只读方式打开文件,该文件必须存在。

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

当PATH1对应文件不存在时候,发现r+方式打开失败。新建文件后执行程序

运行结果为:第一次的内容被覆写

[r+ read] abcdefg

[r read] abcdefg

-----------------

[r+ read] 123defg

[r read] 123defg

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

运行结果:第一次写的内容被清空

[r read] abcdefg

-----------------

[r read] 123

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

运行结果:

[w+ read] abcdefg

[r read] abcdefg

-----------------

[w+ read] 123

[r read] 123

a 以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

运行结果:第二次写的内容追加在第一次写的内容中

[r read] abcdefg

-----------------

[r read] abcdefg123

a+ 以追加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

[a+ read] abcdefg

[r read] abcdefg

-----------------

[a+ read] abcdefg123

[r read] abcdefg123

示例代码

#include

#include

char *PATH1 = "D:\\code\\CProject\\FileDemo\\1";

void write(const char *content, const char *path, const char *mode, int isRead);

void read(const char *path);

struct MODE {

char mode[5];

int isRead;

};

int main() {

//文本文件写的模式

struct MODE modes[] = {

{"r+", 1},

{"w", 0},

{"w+", 1},

{"a", 0},

{"a+", 1},

};

for (int i = 0; i < 5; i++) {

struct MODE mode = modes[i];

printf("=========%s write==========\n", mode.mode);

write("abcdefg", PATH1, mode.mode, mode.isRead);

read(PATH1);

printf("-----------------\n");

write("123", PATH1, mode.mode, mode.isRead);

read(PATH1);

printf("\n");

write("", PATH1, "w", 0);

}

return 0;

}

void write(const char *content, const char *path, const char *mode, int isRead) {

FILE *file = fopen(path, mode);

if (file == NULL) {

return;

}

fputs(content, file);

//是否读文件

if (isRead == 1) {

//指针偏移到文件首

fseek(file, 0, SEEK_SET);

char str[50];

fgets(str, 50, file);

printf("[%-3s read] %s\n", mode, str);

}

fclose(file);

}

//读取文件内容

void read(const char *path) {

FILE *file = fopen(path, "r");

if (file == NULL) {

return;

}

char str[50];

fgets(str, 50, file);

printf("[%-3s read] %s\n", "r", str);

fclose(file);

}

运行结果

=========r+ write==========

[r+ read] abcdefg

[r read] abcdefg

-----------------

[r+ read] 123defg

[r read] 123defg

=========w write==========

[r read] abcdefg

-----------------

[r read] 123

=========w+ write==========

[w+ read] abcdefg

[r read] abcdefg

-----------------

[w+ read] 123

[r read] 123

=========a write==========

[r read] abcdefg

-----------------

[r read] abcdefg123

=========a+ write==========

[a+ read] abcdefg

[r read] abcdefg

-----------------

[a+ read] abcdefg123

[r read] abcdefg123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值