计算机考试-C语言 文件读写—东方仙盟

计算机考试-C语言 文件读写—东方仙盟
一、文件打开模式 fopen 第二参数重中之重必背1. 只读 rrread功能只读只能读不能写文件不存在打开失败返回 NULL文件存在从文件开头读取不能修改、新增内容2. 只写 wwwrite功能只写清空原有内容从头写文件不存在新建空白文件文件存在直接清空全部原有数据覆盖不能读文件3. 追加 aaappend功能只写在文件末尾追加内容不覆盖原有文字文件不存在新建文件文件存在光标放在最后新增内容写末尾不能读4. 读写组合带 二级高频代表可读可写区分 r/w/ar读写 文件必须存在不清空可读可写可修改中间内容w读写 文件不存在新建存在直接清空可读可写a读写追加 文件不存在新建原有内容保留读从头读写只能写末尾5. 二进制标志 b选择题坑点不带 b文本文件默认 带b二进制文件rb wb ab rb wb ab考点读写图片、数字、结构体用二进制 btxt 文本不用 b速记口诀r 只读无文件报错w 只写清空重写a 只写末尾追加带 都能读带 b 二进制。二、文件操作核心函数输入 / 输出分两类背参数一文件输出函数写文件把数据存入文件fputc(ch, fp)写单个字符ch 是字符变量fp 文件指针 等价把字符 ch 写入 fp 指向文件fputs(str, fp)写字符串str 字符数组 / 字符串常量 注意不会自动换行要手动加\nfprintf(fp, 格式控制, 变量)格式化写入和 printf 对比多第一个参数文件指针 fp 例fprintf(fp,%d %f,a,b);二文件输入函数读文件从文件拿数据到程序ch fgetc(fp)读取单个字符返回读到字符读到文件末尾返回EOF-1fgets(str, n, fp)读取一行字符串 参数str 存字符串数组n 最多读 n-1 个字符fp 文件指针 读到换行符\n停止会把\n一起存入数组fscanf(fp, 格式, 变量)格式化读取对比 scanf多文件指针 fp 例fscanf(fp,%d,x);三二进制整块读写结构体必考fwrite(地址, 单个大小, 个数, fp)写结构体 / 数组fread(地址, 单个大小, 个数, fp)读结构体 / 数组 参数顺序固定缓冲区地址 → 单个元素字节数 → 读写数量 → 文件指针三、文件收尾与判断函数fclose(fp);关闭文件必考填空打开必须关闭feof(fp)判断是否到文件末尾未到末尾返回 0读到末尾返回非 0 易错坑先读再判断 feof不能直接判断文件打开标准模板程序题必背FILE *fp; fp fopen(test.txt,r); if(fp NULL) // 判断打开失败 { printf(打开失败); return 0; } // 读写操作 fclose(fp);四、易混对比考点选择题高频坑1. printf / scanf ↔ fprintf / fscanfprintf (格式变量) → fprintf (fp, 格式变量)scanf (格式 变量) → fscanf (fp, 格式 变量) 唯一区别文件函数第一个参数是 FILE 指针 fp2. putchar/getchar ↔ fputc/fgetcputchar (ch) 输出到屏幕fputc (ch,fp) 输出到文件chgetchar () 屏幕读字符chfgetc (fp) 文件读字符3. puts / gets ↔ fputs / fgetsputs 自动加换行fputs 不加换行gets 不安全已淘汰考试只用 fgets五、r w a r w a 对比表直接背诵表格模式可读可写文件不存在文件存在写入位置r√×打开失败保留原文不可写w×√新建清空全部文件开头a×√新建保留原文文件末尾r√√打开失败保留原文任意位置修改w√√新建清空全部开头写a√√新建保留原文读从头写只能末尾六、高频判断题背诵fopen 返回值是 FILE * 类型打开失败返回 NULL。EOF 是文件结束标记值为 - 1只能用于文本文件 fgetc 判断。w 模式打开会直接删除原有全部内容极易丢数据。a 追加模式永远不能修改前面已有的内容只能末尾添加。二进制读写 fread/fwrite 必须搭配 rb wb ab 打开文件。使用完文件必须 fclose否则数据可能丢失、占用资源。fgets 第二个参数 n最多读取 n-1 个字符最后一位存 \0。fputs 不会自动输出换行符puts 会自动换行。七、经典填空背题模板模板 1读取文件所有字符FILE *fp; char ch; fp fopen(1.txt,r); while( (ch fgetc(fp)) ! EOF ) { putchar(ch); } fclose(fp);模板 2追加写入字符串FILE *fp; fp fopen(test.txt,a); fputs(hello c\n,fp); fclose(fp);模板 3格式化读写数字//写入 fprintf(fp,%d,100); //读取 int x; fscanf(fp,%d,x);模板 4结构体二进制写入struct Stu s; FILE *fpfopen(data.dat,wb); fwrite(s,sizeof(struct Stu),1,fp); fclose(fp);人人皆为创造者共创方能共成长每个人都是使用者也是创造者是数字世界的消费者更是价值的生产者与分享者。在智能时代的浪潮里单打独斗的发展模式早已落幕唯有开放连接、创意共创、利益共享才能让个体价值汇聚成生态合力让技术与创意双向奔赴实现平台与伙伴的快速成长、共赢致远。原创永久分成共赴星辰大海原创创意共创、永久收益分成是东方仙盟始终坚守的核心理念。我们坚信每一份原创智慧都值得被尊重与回馈以永久分成锚定共创初心让创意者长期享有价值红利携手万千伙伴向着科技星辰大海笃定前行拥抱硅基 生命与数字智能交融的未来共筑跨越时代的数字文明共同体。东方仙盟拥抱知识开源共筑数字新生态在全球化与数字化浪潮中东方仙盟始终秉持开放协作、知识共享的理念积极拥抱开源技术与开放标准。我们相信唯有打破技术壁垒、汇聚全球智慧才能真正推动行业的可持续发展。开源赋能中小商户通过将前端异常检测、跨系统数据互联等核心能力开源化东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案让更多商家能够平等享受数字转型的红利。共建行业标准我们积极参与国际技术社区与全球开发者、合作伙伴共同制定开放协议 与技术规范推动跨境零售、文旅、餐饮等多业态的系统互联互通构建更加公平、高效的数字生态。知识普惠共促发展通过开源社区 、技术文档与培训体系东方仙盟致力于将前沿技术转化为可落地的行业实践赋能全球合作伙伴共同培育创新人才推动数字经济 的普惠式增长阿雪技术观在科技发展浪潮中我们不妨积极投身技术共享。不满足于做受益者更要主动担当贡献者 。无论是分享代码、撰写技术博客还是参与开源项目 维护改进每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地我们携手在此探索硅基 生命为科技进步添砖加瓦。Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Dont just be the one reaping all the benefits; step up and be a contributor too. Whether youre tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. Were gonna team up and explore the whole silicon - based life thing, and in the process, well be fueling the growth of technology