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

文件IO练习1

题目一:

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

实现代码:

#define LEN_BUF 256int main(int argc, const char *argv[])
{if(argc != 3){fprintf(stderr,"程序入参输入有误\n");return -1;}FILE *src=fopen(argv[1],"r");FILE *dest=fopen(argv[2],"w");if(src==NULL||dest==NULL){fprintf(stderr,"文件打开失败\n");return -1;}char buffer[LEN_BUF];size_t num;while((num=fread(buffer,sizeof(char),LEN_BUF,src))>0){//size_t num=fread(buffer,sizeof(char),LEN_BUF,src);fwrite(buffer,sizeof(char),num,dest);}fclose(src);fclose(dest);printf("文件拷贝完成\n");return 0;
}

运行效果:

ubuntu@ubuntu:~/99-Prac/1015$ ./a.out /etc/passwd passwd
文件拷贝完成
ubuntu@ubuntu:~/99-Prac/1015$ diff /etc/passwd passwd
ubuntu@ubuntu:~/99-Prac/1015$ cat /etc/passwd | wc -l
50
ubuntu@ubuntu:~/99-Prac/1015$ cat passwd | wc -l
50

题目二:

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

实现代码:

int main(int argc, const char *argv[])
{if(argc != 2){fprintf(stdout, "输入参数有误\n");return -1;}FILE *fp=fopen(argv[1],"r");if(fp == NULL){fprintf(stdout, "文件[%s]打开失败\n", argv[1]);return -1;}//使用fgets统计行数int cnt=0;char buffer[1024];while((fgets(buffer, sizeof(buffer), fp))!=NULL){int len=strlen(buffer);if(buffer[len-1] == '\n')cnt++;}fclose(fp);printf("文件[%s]一共有[%d]行\n", argv[1], cnt);return 0;
}

运行效果:

ubuntu@ubuntu:~/99-Prac/1015$ ./a.out passwd
文件[passwd]一共有[50]行
ubuntu@ubuntu:~/99-Prac/1015$ cat passwd | wc -l
50

题目三:

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

实现代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>int main(int argc, const char *argv[])
{FILE *fp=fopen("time.log","w");if(fp == NULL){fprintf(stderr,"文件打开失败\n");return -1;}//每一秒中在终端打印下系统时间time_t curTime;time_t preTime=0;//记录上一次打印的时间int cnt=0;while(1){curTime=time(NULL);if((curTime-preTime)<1){//仍然在1秒以内continue;}	preTime=curTime;//打印struct tm* t=localtime(&curTime);	fprintf(fp,"行号[%03d] %4d-%02d-%02d %02d:%02d:%02d\n", ++cnt,t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);fflush(fp);}fclose(fp);//虽然永远执行不到return 0;
}

运行效果:

ubuntu@ubuntu:~/99-Prac/1015$ tail -f time.log
行号[001] 2024-10-15 18:57:27
行号[002] 2024-10-15 18:57:28
行号[003] 2024-10-15 18:57:29
行号[004] 2024-10-15 18:57:30
行号[005] 2024-10-15 18:57:31
行号[006] 2024-10-15 18:57:32
行号[007] 2024-10-15 18:57:33
行号[008] 2024-10-15 18:57:34
行号[009] 2024-10-15 18:57:35
行号[010] 2024-10-15 18:57:36
行号[011] 2024-10-15 18:57:37
行号[012] 2024-10-15 18:57:38
行号[013] 2024-10-15 18:57:39
行号[014] 2024-10-15 18:57:40
行号[015] 2024-10-15 18:57:41
行号[016] 2024-10-15 18:57:42


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

相关文章:

  • linux下找到包含某字符串的文件
  • 基于深度学习的AI生成式人脸图像鉴别原理
  • 使用Arcgis批量自动出图
  • 人物化身持有者每月奖励:十月版
  • 快速读懂cmmi认证
  • 计算机网络易混知识点
  • 面试后的想法
  • 2023年湖南省职业院校技能大赛(网络系统管理赛项)
  • 如何破解 AI 聊天机器人让它们吐露秘密!窥探 AI 系统指令的 10 种技巧
  • 如何防范网络赌博诈骗手段?
  • Ping32聚合搜索——让企业数据查找从此变得简单高效
  • SpringBoot中的RedisTemplate对象中的setIfAbsent()方法有什么作用?
  • 我店:绿色积分引领的消费新生态与商业奇迹
  • 吴恩达深度学习笔记(3)--深度学习的实际应用
  • 找对象成功率高的相亲软件有哪些?十大高成功率的脱单APP推荐!
  • 【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想!
  • 数据治理实战:数仓治理要做什么
  • 【可答疑】基于51单片机的自动烘手器(含仿真、代码、报告、演示视频等)
  • 商业级免费OCR利器!Surya OCR:支持90+种语言识别,复杂布局识别,表格解析全覆盖!
  • Pytorch基础:Tensor的detach方法