当前位置: 首页 > wzjs >正文

做外贸哪个网站看外汇百度推广人联系方式

做外贸哪个网站看外汇,百度推广人联系方式,wordpress在页面添加文章分类导航,找做网站公司在 C 语言中,文件的读写是一个非常常见的需求。fopen 是标准库中提供的函数,用来打开文件,返回一个文件指针供后续操作使用。本篇博客将详细介绍 fopen 的使用方法、每个参数的含义,以及它与 Shell 中 >、>> 重定向符的联…

在 C 语言中,文件的读写是一个非常常见的需求。fopen 是标准库中提供的函数,用来打开文件,返回一个文件指针供后续操作使用。本篇博客将详细介绍 fopen 的使用方法、每个参数的含义,以及它与 Shell 中 >、>> 重定向符的联系与区别。

一、fopen 函数原型

FILE *fopen(const char *filename, const char *mode);
  • filename:要打开的文件路径,可以是相对路径或绝对路径。
  • mode:打开文件的方式,也叫“模式”,是一个字符串,控制你要如何访问文件(读、写、追加等)。

返回值是一个 FILE * 类型的文件指针,如果打开失败则返回 NULL。

二、mode 模式参数详解

模式描述文件是否需要存在?是否会清空原文件?
"r"只读模式打开文本文件
"w"只写模式打开文本文件是(若存在则清空)
"a"追加写入模式打开文本文件否(写入时追加)
"r+"读写模式打开文本文件
"w+"读写模式,若文件存在则清空
"a+"读写模式,从文件末尾追加写入
"rb"以二进制只读方式打开文件
"wb"以二进制只写方式打开文件
"ab"以二进制追加方式打开文件

2.1 “r”:只读模式

只能读取已有文件,文件必须存在。

#include <stdio.h>int main() {FILE *fp = fopen("data.txt", "r");if (!fp) {perror("无法打开文件");return 1;}char buffer[100];while (fgets(buffer, sizeof(buffer), fp)) {printf("%s", buffer);}fclose(fp);return 0;
}

在终端将显示data.txt中原有的文件内容

2.2 “w” 只写模式

fopen(“log.txt”, “w”) 以“写模式”(“w”)打开 log.txt 文件。如果文件不存在,它会被创建。如果文件已经存在,文件的原始内容会被清空,重新写入新内容。
fprintf(fp, “Hello, world!\n”); 这一行会将字符串 “Hello, world!\n” 写入 log.txt 文件中。
执行完后,文件会关闭,原文件中的所有内容(包括原先的 “hello”)都会被新内容覆盖。
假设log.txt中的内容为:

hello

那么执行下面的代码之后:

#include <stdio.h>int main() {FILE *fp = fopen("log.txt", "w");if (!fp) {perror("无法打开文件");return 1;}fprintf(fp, "Hello, world!\n");fclose(fp);return 0;
}

因此,假设文件 log.txt 在之前包含 “hello”,再次运行此程序后,文件的内容会被重写为:

Hello, world!

2.3 “a”:追加模式

fopen(“log.txt”, “a”) 以“追加模式”(“a”)打开文件。如果 log.txt 文件不存在,它会被创建。如果文件已经存在,新写入的内容会被添加到文件的末尾,而不会覆盖原有的内容。
fprintf(fp, “程序执行了一次。\n”); 这一行会把字符串 “程序执行了一次。\n” 写入文件。
执行完后,文件会关闭。
假设文件 log.txt 中原本的内容为:

hello

那么执行下面的代码之后:

#include <stdio.h>int main() {FILE *fp = fopen("log.txt", "a");if (!fp) {perror("无法打开文件");return 1;}fprintf(fp, "程序执行了一次。\n");fclose(fp);return 0;
}

每次执行该程序时,程序都会在文件末尾追加一行 “程序执行了一次。\n”,所以第一次执行后的文件内容会变为:

hello
程序执行了一次。

如果再次运行该程序,文件内容会变为:

hello
程序执行了一次。
程序执行了一次。

每次执行程序,都会在文件末尾追加 “程序执行了一次。\n” 这一行,而不会覆盖原有的内容。

2.4 “r+”:读写模式

fopen(“log.txt”, “r+”) 以“读写模式”(“r+”)打开文件。这种模式要求文件必须已经存在。如果文件不存在,程序会输出 无法打开文件 并退出。
fprintf(fp, “MODIFIED”); 会将字符串 “MODIFIED” 写入文件,从文件的开头开始覆盖原有的内容。由于 “MODIFIED” 的长度是 8 个字符,它会覆盖文件中的前 8 个字节。
假设原文件log.txt 的内容是:

hello

执行下面代码:

#include <stdio.h>int main() {FILE *fp = fopen("log.txt", "r+");if (!fp) {perror("无法打开文件");return 1;}// 覆盖文件前几个字节fprintf(fp, "MODIFIED");fclose(fp);return 0;
}

执行 fprintf(fp, “MODIFIED”);,文件的前 8 个字节会被 “MODIFIED” 替换。由于 “MODIFIED” 比原来的 hello 长,因此文件会变成:

MODIFIED

2.5. “w+”:读写模式

fopen(“log.txt”, “w+”) 以“读写模式”(“w+”)打开文件。如果文件不存在,它会被创建。如果文件已经存在,它会被清空(即文件内容会被删除),然后可以进行读写操作。
fprintf(fp, “Writing then reading.\n”); 这一行将字符串 “Writing then reading.\n” 写入 log.txt 文件。
rewind(fp); 将文件指针移动回文件的开头,为后续的读取操作做准备。
fgets(buffer, sizeof(buffer), fp); 读取文件内容并将其存储在 buffer 数组中,直到遇到换行符或文件末尾。这里会读取写入的内容 “Writing then reading.\n”。
printf(“读取内容: %s”, buffer); 打印读取到的内容。

#include <stdio.h>int main() {FILE *fp = fopen("log.txt", "w+");if (!fp) {perror("无法打开文件");return 1;}fprintf(fp, "Writing then reading.\n");rewind(fp); // 返回文件开头char buffer[100];fgets(buffer, sizeof(buffer), fp);printf("读取内容: %s", buffer);fclose(fp);return 0;
}

控制台会输出:

读取内容: Writing then reading.

文件 log.txt 的内容会变为:

Writing then reading.

2.6 “a+”:读写追加模式

log.txt 文件的内容将被 追加 新数据,同时程序会读取并打印文件的全部内容。
fopen(“log.txt”, “a+”);

  • 打开文件 log.txt,模式为 “a+”,表示 读写追加模式。
  • 如果文件不存在,它会被创建;如果文件存在,原有内容 不会被清空,且新的写入内容会追加到文件末尾。
  • 该模式允许读取和写入操作,但是写入内容总是从文件末尾开始,不会覆盖原有数据。

fprintf(fp, “添加一行数据\n”);

  • 向文件追加一行数据 “添加一行数据\n”。由于是 “a+” 模式,文件指针会自动移到文件末尾,新的内容会添加到文件的末尾。

rewind(fp);

  • 将文件指针重置到文件开头。这样做的目的是为了能够从文件的开始位置读取内容。

while (fgets(buffer, sizeof(buffer), fp))

  • 使用 fgets 逐行读取文件内容,并将读取的每行内容打印出来。由于文件指针已被 rewind()
    移动到文件开头,这个循环将从文件的第一行开始读取并输出。

假设文件 log.txt 原始内容是:

hello

执行下面代码后:

#include <stdio.h>int main() {FILE *fp = fopen("log.txt", "a+");if (!fp) {perror("无法打开文件");return 1;}fprintf(fp, "添加一行数据\n");rewind(fp);  // 读取需要重置到文件开头char buffer[100];while (fgets(buffer, sizeof(buffer), fp)) {printf("%s", buffer);}fclose(fp);return 0;
}

文件内容变为:

hello
添加一行数据

程序会打印:

hello
添加一行数据

三、fopen 与 Shell 重定向 >、>> 的关系与区别

Shell 中的重定向:
1.>:输出重定向,若文件存在则清空,等价于 fopen(“file.txt”, “w”)。
2.>>:追加输出,文件存在时追加到末尾,等价于 fopen(“file.txt”, “a”)。

对比总结:

操作Shell 表达方式C 语言等价 fopen 模式
重定向输出到文件(覆盖)command > file.txt"w"
追加输出到文件command >> file.txt"a"

示例:

echo "日志内容" > log.txt   # 覆盖写入
echo "更多日志" >> log.txt  # 追加写入
http://www.dtcms.com/wzjs/525627.html

相关文章:

  • 上海企业网站模板推广普通话文字内容
  • 郑州网站建设哪家公司好天天自学网网址
  • wordpress关注公众号登录珠海seo推广
  • 做房产网站能赚钱吗整合网络营销外包
  • 东莞南城网站建设公司seo黑帽技术工具
  • 福州网站制作外包seo排名诊断
  • 公司的网站推广怎么做女教师遭网课入侵直播录屏曝光i
  • php网站建设思路方案优化疫情二十条措施
  • wordpress4.8.3安装seo是怎么优化上去
  • 安徽网站建设推广郑州网站关键词推广
  • 大兴安岭网站建设驻马店百度seo
  • 自建服务器做网站全国最好的广告公司加盟
  • 百度网站域名费一年多少钱广东seo推广方案
  • 南京哪个网站做物业贷seo信息查询
  • 东莞高端网站定制seo综合查询什么意思
  • 教师做班级网站淘宝运营团队怎么找
  • 苏州前几天网站建设百度指数网站
  • 网站修改文案深圳全网推广
  • 做网页游戏网站广州网络运营课程培训班
  • 做传奇网站云服务器地域改选哪里seo优化网站的注意事项
  • 陈村网站设计今日新闻事件
  • wordpress模仿做sliderseo网站关键词优化怎么做
  • wordpress外观南京seo网络推广
  • wordpress文章顶部添加广告靖江seo要多少钱
  • 网站建设企业站有哪些要求淄博网站推广
  • 专业的移动网站建设推广公司是做什么的
  • 建设微信网站的流程成都百度seo优化公司
  • 保健品网站建设背景seo外链优化方法
  • 如何建设一个自己的网站交友平台
  • 深圳做网站公司有哪些地方搜索量用什么工具查询