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

c 文件操作

 

 

 

 

#include <stdio.h>
#include <stdlib.h>  // 添加exit函数的头文件void demo01()
{FILE* fp;char ch, FileName[20];printf("请输入所用的文件名:");//scanf_s("%s", FileName, (unsigned)_countof(FileName));  // scanf_s需要指定缓冲区大小\//**将scanf换成scanf_s
但是,scanf_s函数只能在vs上使用,其他平台无法使用,故修改后代码无法移植,不建议*/scanf("%s", FileName);/*if ((fp = fopen_s(FileName, 'w')) == NULL){printf("无法打开此数据文件、\n");exit(0);}*/// 修正fopen_s的使用if (fopen_s(&fp, FileName, "w") != 0)  // fopen_s正确用法{printf("无法打开此数据文件\n");exit(0);}ch = getchar();printf("请和收入字符串(一# 结束):");ch = getchar();while (ch != '#'){fputc(ch, fp);putchar(ch);ch = getchar();}fclose(fp);// putchar(10);
}void demo02()
{FILE* fp;char str[1024];fp = fopen("demo.txt", "r");if (fp == NULL)printf("打开文件失败");elseprintf("打开文件成功");while (!feof(fp)){// printf("大小:%d", sizeof(str));if (fgets(str, sizeof(str), fp) != NULL)printf("\n 读取文件数据如下:\n %s", str);}}struct student
{int no;char name[10];
};void demo03()
{struct student st[2] = {{101,"张三"},{102,"李四"}};FILE* fp = fopen(".\\studentdata.txt", "w");if (fp == NULL){perror("open file fail\n");exit(1);}fwrite(st, sizeof(struct student), 2, fp);fclose(fp);}void demo04()
{FILE* fp = fopen(".\\studentdata.txt", "r");if (fp == NULL){perror("open file fail\n");exit(1);}struct student st[2];fread(st,sizeof(struct student), 2,fp);printf("No:%d \t Name:%s\n", st[0].no, st[0].name);printf("No:%d \t Name:%s\n", st[1].no, st[1].name);//int i;for (int  i = 0; i < 2; i++){printf("%d\n", i);printf("No:%d \t Name:%s\n", st[i].no, st[i].name);}fclose(fp);}void demo05()
{FILE* fpold, * fpnew;fpold = fopen("old.dat", "r");fpnew = fopen("new.dat", "w");// 检查文件是否成功打开if (fpold == NULL || fpnew == NULL) {printf("文件打开失败!\n");exit(1);}/*while (!feof(fpold))putchar(getc(fpold));*/int ch;  // 使用 int 类型,因为 EOF 是 int 类型while ((ch = getc(fpold)) != EOF) {putchar(ch);}printf("\n");// rewind(!feof(fpold));/*rewind(!feof(fpold)) 错误!feof(fpold) 返回的是布尔值(0或1),而不是文件指针应该直接使用 rewind(fpold)**/rewind(fpold);/*while (!feof(fpold))putc(getc(fpold), fpnew);*/while ((ch = getc(fpold)) != EOF) {putc(ch, fpnew);}fclose(fpold);fclose(fpnew);}
int main()
{demo05();return 0;
}

  

 

http://www.jsqmd.com/news/402528/

相关文章:

  • 学霸同款!顶流之选的降AIGC工具 —— 千笔·专业降AIGC智能体
  • 2026年,哪些专利代理助手更受青睐?智能专利管理/专利复审/专利改写修订/智能专利生成,专利代理AI工具哪家权威 - 品牌推荐师
  • Redis分布式锁从入门到精通:从SETNX到Redisson看门狗机制
  • 改稿速度拉满!专科生专属降AI神器 —— 千笔AI
  • 智能语音客服与RAG技术融合:从架构设计到生产环境实践
  • ChatGPT文献阅读效率提升实战:从文本解析到知识提取的最佳实践
  • 真的太省时间!千笔ai写作,专科生论文好帮手
  • 2026冲刺用!千笔写作工具,最受欢迎的一键生成论文工具
  • 2026年辽宁汽车增压器改装趋势,荣威车主口碑之选,北汽2.0增压器/江雁增压器/三菱奕歌增压器,汽车增压器改装哪个好 - 品牌推荐师
  • OpenCV毕设新手避坑指南:从环境配置到第一个图像处理应用
  • Spokenly语音输入配置Qwen3-asr进行语音输入
  • AI元人文对“大模型赋能哲学社会科学研究”三个深化维度的回应
  • 如何为CLine选择火山方舟API Provider:技术选型与实战指南
  • 北京朝阳区附近回收黄金店实测,我把几家都跑了一遍
  • 运筹学-指派问题(匈牙利法)
  • C++11现代化编程基础
  • Chatbot Arena实战:基于人类偏好的LLM评估平台开发指南
  • 兰亭妙微作品一龙泉茶苑麻将游戏界面设计
  • CosyVoice 报错 ‘没有预训练音色‘ 的深度解析与解决方案
  • 解决 ‘chattts/asset/decoder.safetensors not exist‘ 错误的AI辅助开发实战指南
  • cnPack里MarkDown里RTF显示
  • 基于MCP的智能客服系统开发实战:知识库与工单系统深度集成方案
  • ChatTTS 实战教程:从零构建高自然度语音合成系统
  • CentOS 7/8 系统下 FunASR 语音识别引擎的完整部署指南与性能调优
  • 实战解析:如何通过CosyVoice API构建高可用有声内容生成系统
  • ChatTTS模型实战指南:从零搭建到生产环境部署的避坑要点
  • 深入解析cosyvoice 3.0开源框架:技术选型与生产环境实践指南
  • ChatTTS中Speaker Embedding乱码问题:原理分析与解决方案
  • 兰亭妙微作品一江苏锐创数据中心监控大屏交互及视觉设计
  • 写作压力小了,AI论文网站 千笔·专业论文写作工具 VS 学术猹,专科生专属!