C语言-文件操作-9
题目修改下列程序用命令行界面代替交互式界面#include stdio.h#include stdlib.h#include string.h#define BUFSIZE 4096#define SLEN 81void append(FILE * source,FILE * dest);char * s_gets(char * st,int n);int main(){FILE * fa, * fs;int files 0;char file_app[SLEN];char file_src[SLEN];int ch;puts(Enter name of destination file: );s_gets(file_app,SLEN); //输入目标文件名if((fa fopen(file_app,a)) NULL){fprintf(stderr,cantt open %s\n,file_app);exit(EXIT_FAILURE);}if(setvbuf(fa,NULL,_IOFBF,BUFSIZE) ! 0){fputs(Cant create output buffer\n,stderr);exit(EXIT_FAILURE);}puts(Enter name of first source file (empty line to quit): );while(s_gets(file_src,SLEN) file_src[0] ! \0){if(strcmp(file_src,file_app) 0) fputs(Cant append file to itself\n,stderr);else if((fs fopen(file_src,r)) NULL) fprintf(stderr,Cant open %s\n,file_src);else{if(setvbuf(fs,NULL,_IOFBF,BUFSIZE) ! 0){fputs(Cants append file to itself\n,stderr);continue;}append(fs,fa);if(ferror(fs) ! 0) fprintf(stderr,Error in reading file %s.\n,file_src);if(ferror(fa) ! 0) fprintf(stderr,Error in writing file %s.\n,file_app);fclose(fs); //关闭读取文件继续下一次的读取files;printf(File %s appended.\n,file_src);puts(Next file (empty line to quit): );}}printf(Done appending. %d files appended.\n,files);rewind(fa);printf(%s contents:\n,file_app);while((ch getc(fa)) ! EOF) putchar(ch);puts(Done displaying.);fclose(fa);return 0;}void append(FILE * source,FILE * dest){size_t bytes;static char temp[BUFSIZE];while(( bytes fread(temp,sizeof(char),BUFSIZE,source)) 0){fwrite(temp,sizeof(char),bytes,dest);}}char * s_gets(char * st,int n){char * ret_val;char * find;ret_val fgets(st,n,stdin);if(ret_val){find strchr(st,\n);if(find) *find \0;else{while(getchar() ! \n)continue;}}}源代码#include stdio.h #include stdlib.h #include string.h #define BUFSIZE 4096 #define SLEN 81 void append(FILE * source,FILE * dest); char * s_gets(char * st,int n); int main(int argc,char * argv[]){ FILE * fa, * fs; int files 0; int ch; if((fa fopen(argv[1],a)) NULL){ fprintf(stderr,cantt open %s\n,argv[1]); exit(EXIT_FAILURE); } if(setvbuf(fa,NULL,_IOFBF,BUFSIZE) ! 0){ fputs(Cant create output buffer\n,stderr); exit(EXIT_FAILURE); } for(int i 2;i argc-1;i){ if(strcmp(argv[i],argv[1]) 0) fputs(Cant append file to itself\n,stderr); else if((fs fopen(argv[i],r)) NULL) fprintf(stderr,Cant open %s\n,argv[i]); else{ if(setvbuf(fs,NULL,_IOFBF,BUFSIZE) ! 0){ fputs(Cants append file to itself\n,stderr); continue; } append(fs,fa); if(ferror(fs) ! 0) fprintf(stderr,Error in reading file %s.\n,argv[i]); if(ferror(fa) ! 0) fprintf(stderr,Error in writing file %s.\n,argv[1]); fclose(fs); //关闭读取文件继续下一次的读取 files; printf(File %s appended.\n,argv[i]); } } printf(Done appending. %d files appended.\n,files); rewind(fa); printf(%s contents:\n,argv[1]); while((ch getc(fa)) ! EOF) putchar(ch); puts(\nDone displaying.); fclose(fa); return 0; } void append(FILE * source,FILE * dest){ size_t bytes; static char temp[BUFSIZE]; while(( bytes fread(temp,sizeof(char),BUFSIZE,source)) 0){ fwrite(temp,sizeof(char),bytes,dest); } } char * s_gets(char * st,int n){ char * ret_val; char * find; ret_val fgets(st,n,stdin); if(ret_val){ find strchr(st,\n); if(find) *find \0; else{ while(getchar() ! \n) continue; } } }演示效果如果朋友你感觉文章的内容对你有帮助可以点赞关注文章和专栏以及关注我哈嘿嘿嘿我会定期更新文章的谢谢朋友你的支持哈

相关新闻

网盘直链下载助手:一个脚本解决九大网盘下载难题

网盘直链下载助手:一个脚本解决九大网盘下载难题

网盘直链下载助手:一个脚本解决九大网盘下载难题 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

2026/7/10 15:22:43阅读更多 →
springAI一 大模型基础知识以及Ollama部署本地模型

springAI一 大模型基础知识以及Ollama部署本地模型

一 人工智能发展 AI,人工智能(Artificial Intelligence),使机器能够像人类一样思考、学习和解决问题的技术。AI发展至今大概可以分为三个阶段: 其中,深度学习领域的自然语言处理(Natural Language Proces…

2026/7/10 15:22:43阅读更多 →
Elasticsearch动态模板深度解析:5大高级应用场景实战指南

Elasticsearch动态模板深度解析:5大高级应用场景实战指南

Elasticsearch动态模板深度解析:5大高级应用场景实战指南 【免费下载链接】complete-guide-to-elasticsearch Contains all of the queries used within the Complete Guide to Elasticsearch course. 项目地址: https://gitcode.com/gh_mirrors/co/complete-guid…

2026/7/10 15:22:43阅读更多 →
dicomParser核心功能揭秘:如何高效解析DICOM Part 10数据流

dicomParser核心功能揭秘:如何高效解析DICOM Part 10数据流

dicomParser核心功能揭秘:如何高效解析DICOM Part 10数据流 【免费下载链接】dicomParser JavaScript parser for DICOM Part 10 data 项目地址: https://gitcode.com/gh_mirrors/di/dicomParser 在医疗影像处理领域,DICOM(Digital Im…

2026/7/10 16:27:55阅读更多 →
Blade光线追踪渲染器深度剖析:实现逼真光影效果的完整指南

Blade光线追踪渲染器深度剖析:实现逼真光影效果的完整指南

Blade光线追踪渲染器深度剖析:实现逼真光影效果的完整指南 【免费下载链接】blade Sharp and simple graphics library 项目地址: https://gitcode.com/gh_mirrors/blade3/blade Blade是一款Sharp and simple的图形库,它提供了强大的光线追踪渲染…

2026/7/10 16:27:55阅读更多 →
如何高效解决Windows热键冲突:Hotkey Detective实用操作指南

如何高效解决Windows热键冲突:Hotkey Detective实用操作指南

如何高效解决Windows热键冲突:Hotkey Detective实用操作指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你…

2026/7/10 16:27:55阅读更多 →
Android Studio中文界面终极方案:告别英文困扰,提升开发效率35%

Android Studio中文界面终极方案:告别英文困扰,提升开发效率35%

Android Studio中文界面终极方案:告别英文困扰,提升开发效率35% 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack…

2026/7/10 16:27:55阅读更多 →
小白程序员必看:如何抓住AI大模型风口,需求才是王道!

小白程序员必看:如何抓住AI大模型风口,需求才是王道!

文章以微信“临时好友”功能为例,阐述了用户真实痛点是产品创新的方向。随后将视角转向AI大模型,指出其火爆源于能有效解决企业降本增效和个人的时间节省需求。最后强调,选择就业方向时应关注需求旺盛的赛道,如AI大模型应用开发&a…

2026/7/10 16:27:55阅读更多 →
Lamson配置详解:轻松定制你的邮件处理规则与策略

Lamson配置详解:轻松定制你的邮件处理规则与策略

Lamson配置详解:轻松定制你的邮件处理规则与策略 【免费下载链接】lamson Pythonic SMTP Application Server 项目地址: https://gitcode.com/gh_mirrors/la/lamson Lamson是一个纯Python编写的SMTP服务器框架,专为构建强大而复杂的邮件应用而设计…

2026/7/10 16:22:55阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →