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

IO编程--拷贝文件、文件总行数输出、时间打印

一、使用fread和fwrite完成两个文件的拷贝,要求源文件和目标文件由外界输入

代码如下:

#include <myhead.h>
int main(int argc, const char *argv[])
{//判断是否输入两个文件名if(argc!=3){fprintf(stderr,"文件个数错误");return -1;}//以读形式打开文件FILE *fp=fopen(argv[1],"r");//以写形式打开文件FILE *fq=fopen(argv[2],"w");//判断文件是否成功打开if(fp==NULL||fq==NULL){perror("fopen error");return -1;}//定义字符串数组char str[50];//循环将一个文件内容写入另一个文件while(1){//调用fread函数,成功返回值为项数,失败返回非项数//一个字节一个字节的读取文件,项数为字符串长度-1int res=fread(str,sizeof(char),sizeof(str)-1,fp);//字符串最后一个位置手动存放空格str[res]='\0';//如果读取失败跳出循环if(res<=0)break;//写入新文件fwrite(str,sizeof(char),res,fq);}fclose(fp);fclose(fq);return 0;
}

运行结果如图所示:

 diff指令是比较两个文件是否相等 失败返回不相等的内容;

二、使用fgets获取当前文件的总行数

代码如下:

#include <myhead.h>
int main(int argc, const char *argv[])
{FILE* fp=fopen(argv[1],"r");if(fp==NULL){perror("fopen error");return -1;}//字符串数组长度足够大 使n只统计换行个数char str[1024];int n=0;while(1){//接受fgets函数返回值char *res=fgets(str,sizeof(str),fp);//如果返回值为null,读取完毕if(res==NULL){printf("读取完毕,该文件共有%d行\n",n);break;}//行数加1n++;}fclose(fp);return 0;
}

运行结果如图所示:

三、向文件中每一秒打印当前系统时间

代码如下:

#include <myhead.h>
#include <time.h>
//获取文件总行数
int count_line(int n)
{FILE* fq=fopen("time.txt","r");char ch=0;while(1){//通过fgetc函数获取文件每个字符ch=fgetc(fq);if(ch==EOF)break;//如果字符是空格行数加一if(ch==10)n++;}return n;fclose(fq);
}
int main(int argc, const char *argv[])
{//以追加的形式打开文件FILE* fp=fopen("time.txt","a+");//手动刷新缓存区fflush(fp);int n=1;//显示当前文件总行数//多次调用函数,都在文件结尾追加行数n=count_line(n);while(1){//调用时间函数,获取当前时间time_t sys_time=time(NULL);//转换获取时间的格式struct tm* curr_time=localtime(&sys_time);//文件写入当前时间fprintf(fp,"%d、%4d年%2d月%2d日 %2d:%2d:%2d\n",\n,curr_time->tm_year+1900,curr_time->tm_mon+1,\curr_time->tm_mday,curr_time->tm_hour,curr_time->tm_min,\curr_time->tm_sec);//刷新缓存区,立即将时间写入文件fflush(fp);//行数加1n++;//等待1秒sleep(1);}fclose(fp);return 0;
}

运行结果如图所示:

四、部分io编程思维导图


http://www.mrgr.cn/news/50823.html

相关文章:

  • MYSQL数据库操作
  • Codeforces Round 942 (Div. 2) D2. Reverse Card (Hard Version)
  • 51单片机快速入门之数码管的拓展应用2024/10/15
  • 免费也能这么强?五款超实用报表工具推荐
  • 诺奖印证产业方向,AI先行者晶泰科技开拓黄金赛道
  • 目标检测——Libra R-CNN算法解读
  • 嵌入式Linux:信号掩码
  • windows系统备份mysql数据库bat脚本
  • 【基础解读】Word2Vec和GloVe
  • 注意力机制2024持续发力!多尺度卷积+Attention一举拿下高分!模型准确率几乎100%
  • 【自然语言处理】Encoder-Decoder架构
  • 100套深度学习毕业设计项目合集【含源码 + 操作文档】
  • 跨境电商干货:Etsy选品及相关运营技巧分享
  • SHELL脚本之输出语句的使用
  • 完全背包问题拓展(爬楼梯)
  • 【文件处理】一、XML格式文件处理
  • 大模型之三十二-语音合成TTS(coqui) 之二 fine-tune
  • STL源码剖析:适配器
  • 通过Express + Vue3从零构建一个用户认证与授权系统(二)数据库与后端项目搭建与实现
  • 【嵌入式】手把手教你入门STM32的GPIO:初识GPIO输出