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

标准IO练习

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

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//判断输入的文件是否个数为3
	if(argc != 3)
	{
		fprintf(stderr,"input file error\n");
		return -1;
	}
	//说明传输的文件数量正确
	//打开所需要的文件
	FILE* srcfp = fopen(argv[1],"r+");
	if(NULL == srcfp)
	{
		perror("srcfp open error");
		return -1;
	}
	FILE* desfp = fopen(argv[2],"w+");
	if(NULL == desfp)
	{
		perror("desfp open error");
		return -1;
	}
	//创建一个数组接受暂时保存传输的数据
	char data[100]="";
	while(1)
	{
		//从源文件中读取数据
		int res = fread(data , 1,sizeof(data),srcfp);
		if(res==strlen(data))
		{
			perror("读取结束");
		}

		int des = fwrite(data , 1,strlen(data),desfp);
		if(des==strlen(data))
		{
			perror("写入结束");
			fprintf(stdin ,"复制成功\n");
			break;
		}
		
	}
	fclose(srcfp);
	fclose(desfp);

	return 0;
}

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

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//判断输入的文件是否个数为2
	if(argc != 2)
	{
		fprintf(stderr,"input file error\n");
		return -1;
	}
	FILE* fp = fopen(argv[1],"r");
	if(NULL == fp)
	{
		perror("fopen error");
		return -1;
	}
	char s[100] = "";
	int i=0;
	while(1)
	{
		char *p = fgets(s,sizeof(s),fp);
		if(p != NULL){
			i++;                                //读取成功计数加一行
		}else if(p == NULL){
			break;                              //读取失败,相当于读取结束
		}

	}
	fclose(fp);
	printf("该文件有%d行\n",i);

	return 0;
}

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

#include <myhead.h>
#include <time.h>
int main(int argc, const char *argv[])
{
	char buf[128] = "";           //存放转变后的字符串
	int i=0;
	char s[100] ="";

	FILE * profp = fopen("time.txt","r+");              //追加的形式向文件添加时间戳
	if(NULL == profp)
	{
		perror("fopen error");
		return -1;
	}


	while(1)
	{
		char *p = fgets(s,sizeof(s),profp);
		if(p != NULL){
			i++;                                //读取成功计数加一行
		}else if(p == NULL){
			break;                              //读取失败,相当于读取结束
		}

	}	

	while(1){
		
	//定义变量存放秒数
	time_t sys_time = time(NULL);

	//将秒数转换为结构体
	struct tm* time_fist = localtime(&sys_time);

		sprintf(buf,"%04d-%02d-%02d %02d:%02d:%02d\n",time_fist->tm_year+1900,\
										time_fist->tm_mon+1,\
										time_fist->tm_mday,\
										time_fist->tm_hour,\
										time_fist->tm_min,\
										time_fist->tm_sec);
		printf("buf = %s\n", buf);
		printf("s = %s\n",s);
		if(strcmp(s,buf)!=0)
		{
			i++;
			printf("chenggong\n");
			fprintf(profp,"%d、",i);
			fwrite(buf,sizeof(buf),1,profp);
			fprintf(profp,"\n");
			fflush(profp);
		}
		strcpy(s,buf);
	 	sleep(1);

	}
	fclose(profp);
	return 0;
}

 


http://www.kler.cn/a/349172.html

相关文章:

  • 已经安装了qt,想添加mingw组件,包含gcc等
  • 开源AI网络爬虫工具Crawl4AI
  • Vs配置opencv库 实例,opencv选用4.9.0版本,vs版本是2022社版,学习笔记不断更新
  • xss三种类型的区别与危害
  • SpringCloud-持久层框架MyBatis Plus的使用与原理详解
  • 基于SpringBoot+Vue的在线视频教育平台的设计与实现(带文档)
  • 本地流量配合美容院打法及生财合伙人推荐
  • 智能扭矩系统在轨道交通行业的应用_SunTorque
  • python入门教程
  • Linux防火墙与SElinux
  • 子组件向父组件传值$emit
  • Flink On kubernetes
  • uni-app 实现APP版本更新的深度解析
  • 【Redis】缓存预热、雪崩、击穿、穿透、过期删除策略、内存淘汰策略
  • Linux `vmstat` 命令详解
  • 7万字Java后端面试题大全(附答案)——持续更新
  • JavaScript将array数据下载到Excel中
  • 004、合并两个有序数组
  • 大数据治理:挑战与实践
  • Redis协议详解及其异步应用