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

xm C语言12

1.rewind函数

因为我们定义的FILE*fp 是一个指针,所以他不断移动的时候最终会到达文件末尾,我们如果还想使用这个文件关闭再打开未免太过麻烦,所以就有了rewind

rewind的作用就是将指针移动到文件开头,在 再次读取相同的文件 以及读写之间转换 时起作用

#inclde<stdio.h> int main(){ //rewind函数 FILE*fp=fopen("ok.txt","r"); if(file==NULL){ printf("error"); return 0;} char x; while(fscanf(fp,"%c",&x)!=EOF){ printf("%c",x); } rewind(fp); printf("again\n"); while(fscanf(fp,"%c",&x)!=EOF){ printf("%c",x); } fclose(fp); return 0;}

2.structure结构体写入和读取文件

写入:将结构体的内容传入到文件中保存,文件可以保存大量的结构体,使用方便

fprintf(file.name,"%s/%d....",variable);

读取:从文件中读取相应的内容传到内存,供计算机短期使用

fscanf(file.name,"%s",&x address);

#include<stdio.h> struct school{char name[20]; int a;//age char grade;//ABCD }; int main(){ FILE*file=fopen("school.txt","w"); if(file==NULL){ printf("error"); return 0;} struct school s1={amy,18,B}; fprintf(file,"name is %s, age is %d,grade is %c",s1.name,s1.a,s1.grade);} fclose(file); file=fopen("school.txt","r"); char k; while(fscanf(file,"%c",&k)!=EOF){ printf("%c",k); } fclose(file); return 0;}

这里输出用到的while循环就是当我读取的内容不等于EOF(不是结尾的时候)因此最后输出的结构就是 name is amy,age is 18,grade is B

同时在这里的while循环也可以是

fscanf(file,"name is %s,age is %d,grade is %c",&s1.name,&s1.a,&s1.grade);

printf("name is %s, age is %d,grade is %c",s1.name,s1.a,s1.grade);

fscanf的格式必须和fpeintf输入的完全匹配

(对结构体数组出现了问题,明天问老师后二编补充)

3.search 从文件中查找

第一种 使用sctmp函数 strcmp(x,y)是逐字符比较然后进行做差,通常寻找单字符时使用

#include <stdio.h> #include <stdlib.h> int main() { FILE*fp=fopen("test.txt","w"); if(fp==NULL){ printf("error"); return 0; } char ch[20]="letter"; char word[]="A"; fputs(ch,fp); fclose(fp); fp=fopen("test.txt","r"); char k[20]; int count=0; while(fscanf(fp,"%s",k)!=EOF){ if(strcmp(k,word)==0) count++; } printf("occur %d times",count); fclose(fp); return 0; }

第二种就是直接if进行比较(只需要换while循环部分) 如果是整数就更好做了

while(fscanf(fp,"%c",&k)!=EOF){ if(strcmp(k,word)==0) count++; } while(fscanf(fp,"%s",k)!=EOF){ if(strcmp(k,word)==0) count++; }

4.f()的格式

首先f....()都是函数,只是简化了格式,但是仍然需要输入所需的内容来获得函数结果。他们来自于函数库 stdio.h 所以使用之前记得调用函数库

fscanf(文件指针, 格式字符串, 输入项表列) eg fscanf(fp, "%d,%f", &i, &t)

fprintf(文件指针, 格式字符串, 输出表列)egfprintf(fp, "%d,%f", i, t)

fgets(字符数组, 最大字符数, 文件指针),作用是读取一行内容(包括换行符),并在末尾自动添加空字符 '\0' egfgets(str, 100, fp)从文件读取最多 99 个字符

fputs(字符串, 文件指针),作用是将字符串写入文件,不添加额外换行符 egfputs("Hello", fp)

(四种用法来自夸克)

5.注意NULL EOF检查 记得关闭文件

http://www.cnnetsun.cn/news/70446.html

相关文章:

  • gpt-oss-20b能否用于文本摘要任务?实测效果报告
  • 3步搞定!网易云NCM音乐格式转换全攻略
  • Flutter 跨端开发进阶:可复用自定义组件封装与多端适配实战(移动端 + Web + 桌面端)
  • Qwen3-VL-30B在金融报表图表解析中的精准度表现测试
  • Ruby CGI 编程
  • 【直接抄作业】2025 网安工程师入门到精通:零基础全流程(收藏即够用)
  • 8个降AI率工具推荐,本科生开题报告必备
  • C++ 程序流程结构-循环结构-for循环
  • BOE(京东方)发布智能体集群 多智能体协同重塑AI+显示新未来
  • 国产POE降压恒压芯片方案选型:48v-52v输入转5v-12v/1-3A电源芯片
  • 9个研究生论文写作工具,AI工具推荐解决发表难题!
  • 介观交通流仿真软件:Aimsun Next_(1).AimsunNext概述
  • 2011-2025年地级市环境保护关注度(百度搜索指数)数据
  • Poppler Windows版:轻松获取预编译PDF处理工具完整指南
  • 无需高配GPU!FP8量化版SD3.5让文生图成本直降40%
  • (附带word报告)并联型有源电力滤波器APF simulink仿真 利用基于瞬时无功功率理论...
  • Zernike 多项式在圆形、六边形、椭圆形、矩形或环形瞳孔上应用(Matlab代码实现)
  • 如何通过LobeChat提升大模型token的利用率和转化率?
  • GitHub热门Fork项目:用Qwen3-VL-8B实现图片自动打标签
  • 使用Ollama运行Seed-Coder-8B-Base:轻量级代码生成解决方案
  • 企业级部署首选:Stable-Diffusion-3.5-FP8生产环境搭建指南
  • 我开源了一个Markdown转PDF工具
  • Python 基础语法(二):程序流程控制
  • YoloV8 Detect类扩展支持Qwen-Image生成掩码
  • 深度学习视频教程资源合集
  • 9 个课堂汇报 AI 工具,专科生快速生成内容推荐
  • 郭大勇:以安全固根基 共建数字金融新生态
  • CFCA张野解读《2025数字银行调查报告》
  • CFCA刘通:以多维互信的数字身份服务 赋能金融数字化转型
  • 多模态AI前沿:从Agent构建到视频AIGC