标准IO:fread/fwrite

news2024/11/28 17:59:16

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

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//判断是否有3个文件传入
	if(3 != argc){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开源文件
	FILE * sfp = fopen(argv[1] , "r");
	//判断源文件是否打开成功
	if(sfp == NULL){
		perror("fopen argv[1] error");
		return -1;
	}
	
	//打开目标文件
	FILE * dfp = fopen(argv[2] , "w");
	//判断目标文件是否打开成功
	if(dfp == NULL){
		perror("fopen argv[2] error ");
		return -1;
	}

	//定义接收数据的字符数组
	char dch[128]  = "0";
	while(1){
		//从源文件中读取数据到数组中
		//res读取到的数据长度
		int res = fread(dch, 1, sizeof(dch), sfp);
		//res为0,读取结束
		if( res == 0 ){
			break;
		}
		//将数组中的数据输出到目标文件中
		fwrite(dch, 1 , res, dfp);
	}

	fclose(sfp); //关闭源文件
	fclose(dfp); //关闭目标文件
	return 0;
}

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

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//判断是否有2个文件传入
	if(argc != 2){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开文件
	FILE * fp = fopen(argv[1],"r");
	//判断文件是否打开成功
	if(fp ==NULL){
		perror("fopen error");
		return -1;
	}

	char ch[10] = ""; //定义接收字符的数组
	int line = 0; //定义行数
	while(1){
		//从文件中读取数据到字符串中
		//res为fgets返回值的结果
		char * res = fgets(ch, sizeof(ch), fp);
		//判断读取数据是否结束
		if(res == NULL){
			break;
		}
		//计算行号
		if(ch[strlen(ch) - 1] == '\n'){
			line++;
		}
	}
	printf("%d\n",line);

	fclose(fp); //关闭文件
	return 0;
}

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

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//判断是否有2个文件传入
	if(argc != 2){
		fputs("input file error\n",stderr);
		return -1;
	}

	//打开文件
	FILE * fp = fopen(argv[1],"w+");
	//判断文件是否打开成功
	if(fp ==NULL){
		perror("fopen error");
		return -1;
	}

	//临时变量t,存储上一个时间
	char t[128] = "";
	//行号
	int line = 0;
	while(1){
		//定义变量存储秒数
		time_t sys_time = time(NULL);
		//将秒数转换成结构体
		struct tm *time_ptr = localtime(&sys_time);
		//存储每一次的时间
		char ch[128] = "";
		//将格式穿转换成字符串
		sprintf(ch,"%5d\t%2d:%2d:%2d\n",++line, time_ptr->tm_hour, time_ptr->tm_min, time_ptr->tm_sec);
		printf("ch=%s",ch);
		//判断两次时间是否相等,不相等写入文件中
		if(strcmp(t,ch) != 0){
			printf("success!\n");
			//将本次时间保存到临时变量
			strcpy(t,ch);
			fwrite(ch,sizeof(ch),1,fp);
			//刷新行缓存
			fflush(fp);
		}
		//休眠1s
		sleep(1);
	}

	fclose(fp); //关闭文件
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2216074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高可用之限流 08-leaky bucket漏桶算法

限流系列 开源组件 rate-limit: 限流 高可用之限流-01-入门介绍 高可用之限流-02-如何设计限流框架 高可用之限流-03-Semaphore 信号量做限流 高可用之限流-04-fixed window 固定窗口 高可用之限流-05-slide window 滑动窗口 高可用之限流-06-slide window 滑动窗口 sen…

.ts文件编译为.js文件

.ts文件如何编译为.js文件 首先安装了tsc $ npm install -g typescript可以使用如下命令检查是否安装tsc,出现版本号则说明安装成功 tsc -v创建.ts文件 创建 1.ts&#xff0c;编写代码如下&#xff1a; function test(a:string):string{return a }编译为.js文件 执行如下…

vue2中vuex状态管理使用安装教程及多模块化拆分,包含大多项目常用用法

前言 所有模块的vuex文件堆在一起太难看了 拆成多个&#xff0c;所有项目都这么做 vue2版本的vuex 脚手架搭建 npm install -g vue/cli vue create vuexDemo cd vuexDemo步骤 1&#xff09;安装 npm i vuex32&#xff09;快速入门 学过一次后老是记不住&#xff1f;害…

视觉的边界填充、数值计算和腐蚀操作

文章目录 一、边界填充二、数值计算三、图片融合四、腐蚀操作 一、边界填充 边界填充的4种方法&#xff1a; # 导入OpenCV库&#xff0c;用于图像处理 import cv2 # 导入matplotlib的pyplot模块&#xff0c;用于图像显示 import matplotlib.pyplot as plt # 导入numpy库&…

【Unity】Unity中接入Admob聚合广告平台,可通过中介接入 AppLovin,Unity Ads,Meta等渠道的广告

一、下载Google Admob的SDK插件 到Google Admob官网中&#xff0c;切换到Unity平台 进来之后是这样&#xff0c;注意后面有Unity标识&#xff0c;然后点击下载&#xff0c;跳转到github中&#xff0c;下载最新的Admob插件sdk&#xff0c;导入到Unity中 二、阅读官方文档&…

js 实现斐波那契数列

斐波那契数列&#xff1a;所谓斐波那契数列指的是数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;……。即数列满足递推公式&#xff0c;F(0)0&#xff0c;F(1)1 实现代码&#xff1a; 第一种&…

【记录】Django数据库的基础操作

数据库连接 在Django中使用 mysqlclient 这个包用于数据库的连接&#xff0c;切换至 Django环境中直接 pip install mysqlclient 安装此包 1 数据库连接配置 在项目目录下的setting.py中配置 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: mini,#数据库名US…

(IOS)VMware虚拟机上安装win10系统(超详细)

简介 虚拟机是一种软件实现的计算机系统&#xff0c;可以在现有的操作系统平台上运行一个或多个虚拟的操作系统。它通过在主机操作系统上创建一个虚拟的硬件平台&#xff0c;并在其上运行一个完整的操作系统&#xff0c;来模拟一个真实的物理计算机。虚拟机可以提供一种隔离的…

青少年编程能力等级测评CPA C++(二级)试卷(1)

青少年编程能力等级测评CPA C&#xff08;二级&#xff09;试卷&#xff08;1&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; CP2_1_1&#xff0e;下列C程序段中&#xff0c;对二维数组arr的正确定义是&#xff08; &am…

PL/SQL Developer如何连接Oracle数据库(汉化)

简介 PL/SQL Developer是一种用于Oracle数据库开发的集成开发环境&#xff08;IDE&#xff09;。它提供了一个可视化的界面&#xff0c;使开发人员能够方便地编写、调试和执行PL/SQL代码。PL/SQL Developer还具有其他功能&#xff0c;如数据库对象浏览器、SQL编辑器、数据导入…

python深浅拷贝,可变变量与不可变变量

赋值 在 python 中&#xff0c;赋值是将一个值或对象分配给一个变量的过程。赋值操作符是 &#xff0c;用于将右侧的值或对象赋给左侧的变量。 赋值&#xff1a;l2的值会随着原对象l1的值一同改变 l1 [1, 2, 3, 4] print(l1:, l1) l2 l1 print(l2:, l2) 给li列表新增元素 …

Java基础:面向对象编程3

1 Java可变长参数 1.1 概述 Java 的可变长参数&#xff08;Varargs&#xff09;是在 Java 1.5 中引入的功能&#xff0c;允许方法接受任意数量的相同类型的参数。可变参数的语法是在参数类型后面加上三个点&#xff08;...&#xff09;&#xff0c;例如 int... numbers。 1.…

Zsh 安装与配置

目录 1 环境配置 1.1 基本工具安装 1.2 安装 oh-my-zsh 1.3 从.bashrc中迁移配置&#xff08;可选&#xff09; 2 主题配置 2.1 内置主题 2.2 自定义主题 2.2.1 推荐主题 3 插件安装 3.1 推荐插件 3.1.1 zsh -autosuggestions 3.1.2 zsh-syntax-highlighting 3.2 启…

kubernetes中的微服务

目录 一 什么是微服务 二 微服务的类型 三 ipvs模式 3.1 ipvs模式配置方式 四 微服务类型详解 4.1 clusterip 4.2 ClusterIP中的特殊模式headless 4.3 nodeport 4.4 loadbalancer 4.5 metalLB 4.6 externalname 五 Ingress-nginx 5.1 ingress-nginx功能 5.2 部署…

【数据结构】1.顺序表

「前言」 &#x1f308;个人主页&#xff1a; 代码探秘者 &#x1f308;C语言专栏&#xff1a;C语言 &#x1f308;C专栏&#xff1a; C &#x1f308;喜欢的诗句:天行健,君子以自强不息. 线性表 线性表&#xff08;List&#xff09;&#xff1a;零个或多个数据元素的有限序列…

软考(网工)——数据通信基础

&#x1f550;信道特性 1️⃣概念 通信得目的就是传递信息。通信中产生和发送信息得一端叫信源&#xff0c;接受信息的一段叫信宿&#xff0c;信源和信宿之间的通信线路称为信道。 2️⃣信道带宽 W 模拟信道&#xff1a;Wf2-f1&#xff08;f2 和 f1分别表示&#xff1a;信道…

树的中心——dfs

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510, M N*2; int h[N], e[M], ne[M], idx; int n; int ans 2e9; bool st[N]; void add(int a, int b) // 添加一条边a->b {e[idx] b, ne[idx] h[a], h[a] idx ; } int dfs(int u) {int…

芯片记录一下

1、MC34063 电源管理DCDC 输入电压&#xff1a;-0.3~40V 输出电压&#xff1a;Vout1.25*&#xff08;1R2/R1&#xff09; 1.25V~40V

【报错解决】安装scikit-rebate包报错

scikit-rebate ReBATE是一套基于Relief的机器学习特征选择算法 报错信息 解决方案 conda install numpy scipy scikit-learnpip install skrebate依次运行以上两步&#xff0c;即可成功安装&#xff01;

如何实时监测你的光纤资源?

光纤资源作为重要的通信基础设施&#xff0c;实时监测光纤资源的状态是运营管理好光纤资源的重要手段&#xff0c;那常用的监测指标维度与方法有那些呢&#xff1f; 维度1&#xff1a;资源数量 资源数量主是建立资源的基础档案&#xff0c;掌握光缆的型号、路由&#xff1b;光…