文件的读写

server/2024/12/15 10:35:38/

所涉及到的函数如下:<stdio.h>

读写文件之前要先打开文件,使用完要关闭文件归返空间:

fopen    打开

fclose   关闭

返回的是FILE*型,第一个参数是文件的名字,第二个参数是以什么形式打开。

一、写入一个字符

第一个参数是要写进的字符,第二个是目标地址,写进一次会前进一次,不会直接覆盖在第一个

#include<stdio.h>
#include<string.h>
#include<errno.h>// 写一个字符 "A"
int main()
{// 以写的形式打开 名为test.txt的文件FILE* p = fopen("test.txt", "w");// 判断是否成功if (p == NULL){printf("%s\n", strerror(errno));return 1;}// 写入一个字符 fputc('A', p);//再写一个foutc('B',p);//关闭文件fclose(p);p = NULL;return 0;
}

二、读出一个字符

从stream 里面读取一个字符,返回值就是这个字符,如果读到尾部或者发生错误,会返回EOF

// 读一个字符
int main()
{// 以读的形式打开FILE* p = fopen("test.txt","r");// 判断是否成功if (p == NULL){printf("%s\n", strerror(errno));return 1;}// 读取一个字符char pc = fgetc(p);printf("%c\n", pc);//关闭文件fclose(p);p = NULL;return 0;
}

三、写入一行文本

“w” 形式打开文件会清除里面原有的信息

将 str 指向的数据拷贝到 stream指向的地址,直到读到  '\0'

int main()
{// 以写的形式打开一个文件FILE* pt = fopen("test.txt", "w");// 判断是否成功if (pt == NULL){printf("%s\n", strerror(errno));return 1;}// 写入字符串char arr[] = "hello ";fputs(arr,pt);fputs("baby!\n", pt);// 此时文件里面 只有hello 和 baby!// 关闭文件fclose(pt);pt = NULL;return 0;
}

四、读一行文本

跟 fputs 差不多,多了一个限制,num 是读取个数,读到n-1 处或者读到新的一行停止

int main()
{// 以读的形式打开一个文件FILE* pt = fopen("test.txt", "r");// 判断是否成功if (pt == NULL){printf("%s\n", strerror(errno));return 1;}// 读取char arr[] = {0};fgets(arr, 10, pt);printf("%s", arr);// 关闭文件fclose(pt);pt = NULL;return 0;
}

五、格式化输出

(输入输出都是相对于内存的,打印到文件里,相当于输出;从文件获取信息,相当于输入)

跟printf 类似,多了一个输出的对象,就是格式化将数据打印到 stream 指向的文件里

struct ps
{char arr[20];int i;float f;
};int main()
{struct ps x = { "mylove",20,1.68f };// 打开文件,写的形式FILE* op = fopen("test.txt", "w");//判断 是否成功if (op == NULL){perror("fopen");return 1;}// 写入文件(打印到文件)fprintf(op, "%s %d %f", x.arr, x.i, x.f);// 打印到屏幕 (stdout 是标准输出流,【屏幕】)fprintf(stdout, "%s %d %f", x.arr, x.i, x.f);// 关闭文件fclose(op);op = NULL;return 0;
}

六、格式化输入

类似 scanf  ,从stream指向的文件,按照format的格式化读出数据

struct ps
{char arr[20];int i;float f;
};
int main()
{struct ps bobo = {0};// 打开文件 读rFILE* qp = fopen("test.txt", "r");// 判断……// 读 文件内容fscanf(qp, "%s %d %f", bobo.arr, &(bobo.i), &(bobo.f));printf("%s %d %f", bobo.arr, bobo.i, bobo.f);// 关闭文件fclose(qp);qp = NULL;return 0;
}

七、二进制输出(只针对于文件)

prt指向的对象是 被掏空的对象,stream指向的是要收获的对象

size 是输出元素的大小

count  是输出的个数

struct Peo
{char name[20];int age;float high;
};// fwrite  二进制写  "wb"int main()
{struct Peo s = { "lisi",20,180.5f };//打开文件FILE* ps = fopen("test.txt", "wb");//判断是否成功……// 写入fwrite(&s, sizeof(struct Peo), 1, ps);//关闭文件fclose(ps);ps = NULL;return 0;
}

八、二进制输入

参数和 fwrite函数 一样,不过这次风水轮流转,是从 stream指向的里面复制一份给ptr指向的地方

struct Peo
{char name[20];int age;float high;
};int main()
{struct Peo rp = { 0 };//打开文件FILE* pp = fopen("test.txt", "rb");// 判断……// 读入数据fread(&rp, sizeof(rp), 1, pp);printf("%s %d %f", rp.name, rp.age, rp.high);return 0;
}

scanf 、printf 家族大比拼
scanf针对 标准输入 的格式化输入语句
printf针对 标准输出 的格式化输出语句
fscanf针对 所有输入流 的格式化输入语句
fprintf针对 所有输出流 的格式化输出语句
sscanf从一个字符串中转化出一个格式化的数据
sprintf把一个格式化的数据转化为字符串

FILE* stdin标准输入流(键盘)
FILE* stdout标准输出流(屏幕)
FILE* stderr标准错误流(屏幕)


http://www.ppmy.cn/server/150331.html

相关文章

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…

React 19 除了 RSC 等新功能,还优化了什么?

提示:记录工作中遇到的需求及解决办法 文章目录 前言01. ref 作为 prop02. Context 作为 provider03. refs 的清理函数04. useDeferredValue 的初始值05. 支持文档元数据06. 支持样式表07. 支持异步脚本08. 支持预加载资源09. 支持自定义元素总结前言 React 19 正式发布,新功…

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …

Python课设-谁为影狂-豆瓣数据【数据获取与预处理课设】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…

关于SQL注入的面试题及经验分享

Q&#xff1a;简述数据库的存储引擎 A&#xff1a;数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能&#xff0c;使用不…

【kafka】常用基础命令使用案例

以下是 Kafka 常用命令的详细汇总&#xff0c;包含了常见的操作命令以及使用案例&#xff0c;表格形式方便查看 命令功能命令格式使用案例查看 Kafka 版本查看 Kafka 的版本信息bin/kafka-topics.sh --version获取 Kafka 版本信息&#xff1a; bin/kafka-topics.sh --version创…

网络安全教学博客(一):网络安全基础概念与重要性

在当今数字化时代&#xff0c;网络已经渗透到我们生活的方方面面。从日常的社交娱乐到重要的商业交易、政府事务管理&#xff0c;网络无处不在。然而&#xff0c;随着网络的普及和发展&#xff0c;网络安全问题也日益凸显&#xff0c;它关乎着个人隐私、企业利益乃至国家安全。…

迎接全新的 Kotlin 支持 – K2 模式:基本信息

K2 模式有什么作用&#xff1f; K2 模式是 IntelliJ IDEA 中 Kotlin 支持的新实现&#xff0c;它可以提高 IDE 的稳定性&#xff0c;同时也会为支持未来 Kotlin 语言功能奠定基础。 K2 模式与 Kotlin K2 编译器有什么区别&#xff1f; K2 编译器负责编译 Kotlin 语言 2.0 或…