首页 > 其他分享 >标准IO练习题

标准IO练习题

时间:2024-05-09 21:12:02浏览次数:18  
标签:练习题 systimep 写入 标准 tm IO time 文本 localtime

目录

标准IO练习题

题目:

设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建。

分析:

本题目需要利用time()获取当前系统时间,但由于time()是将获取得到的时间以秒的形式返回,使用起来诸多不便,所以还需要采用localtime()对time()获取数据进行处理。请注意,此时得到的数据并不是正确的系统时间。这是因为localtime()内部定义导致的,所以需要人为的对获取到的数值进行处理。

本题目还需要将获取时间值写入本地磁盘文本中,写入方式有很多。但由于localtime()内部变量均为int类型,所以笔者调用fprintf()函数直接将数据写入到目标文件中。

本题目还要求每隔一秒写入文本中,且文本不存在需要创建。故而fopen的mode不能使用“r+b",且需要调用sleep()配合死循环完成每隔一秒写入文本的要求。

代码展示

/************************************************************************************
*
*	file name:	get_time.c
*	author	 :  [email protected]
*	date	 :  2024/05/09
*	function :  该案例需获取当前系统时间,把时间转换为特定格式”yy年mm月dd日
				星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,
				如果文本不存在则创建。 
* 	note	 :  该案例需要调用localtime()函数、time()和相关标准IO函数,
				并且对localtime函数获取值进行处理
*
*	CopyRight (c)  2023-2024   [email protected]   All Right Reseverd 
*
* *******************************************************************************/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, const char *argv)
{
	while(1)
	{
		//打开log.txt文件,若不存在,则创建该文件
		FILE *fp = fopen("log.txt", "a+b");
		if(fp == NULL)
		{
			printf("log.txt is open fail\n");
			exit(-1);
		}
		//利用time()获取当前系统时间,并将返回值存储起来
		time_t systime = time(NULL);
		//利用localtime()对获取值进行处理,并将处理后的数据写入目标文件中
		struct tm *systimep = localtime(&systime);
		systimep->tm_year += 1900;
		systimep->tm_mon += 1;
		fprintf(fp, "%d 年 %d 月 %d 日 星期%d %d:%d:%d", systimep->tm_year,
				systimep->tm_mon,
				systimep->tm_mday,
				systimep->tm_wday,
				systimep->tm_hour,
				systimep->tm_min,
				systimep->tm_sec);
        //防止写入数据重叠不好看
		fprintf(fp, "\n");
		// 每隔1秒写入一次
		fclose(fp);
		sleep(1);
	}


	return 0;
}

结果展示

image

总结

经过验证,上述代码可以基本完成题目要求。

但是可以对代码进行优化,例如上图中的星期4并不好看,或许可以通过枚举对其进行判断改名;又或是该文本写入后,数据只会从末尾开始写起,当用户需要对文本进行刷新输入的时候,目前程序无法办到。

总而言之,该题目的要求已基本达到,且加深了对于标准IO函数的使用,以及对于time()和localtime()的使用。

知识扩展

time()函数

image

注意:

  • time()是有参数的,但是在使用过程中,一般填为NULL,再设置一个time_t 的变量接受其返回值
  • time()是以秒为单位获取时间,且其返回值也是以秒为单位,其意义为从1970-01-01 00:00:00 到当前系统时间的秒数

localtime()函数

该函数的返回值是一个tm结构体指针变量,且需要传入一个time_t *作为参数。因此,该函数需要与time()一起使用。

image

注意:

  • tm结构体中的变量均为 int 类型,且细分为年月日,时分秒。使用时可以利用结构体指针进行对其调用。
  • tm结构体中的tm_year变量是当前系统时间减去1900后的数据,所以实际使用中需要加上1900得到当前系统时间年数值。
  • tm结构体中的tm_mon变量意为月份,但是其数值范围为0-11与实际中1-12月份不同,所以实际使用中需要手动对其+1.

标签:练习题,systimep,写入,标准,tm,IO,time,文本,localtime
From: https://www.cnblogs.com/fly-home/p/18183081

相关文章

  • 文件IO常用的函数接口
    本文归纳整理了常用的文件IO常见的函数接口及其用法,以供读者查阅目录打开文件fopen关闭文件fclose数据读取字符读取:fgetc、getc、getchar按行读取:fgets、gets按块读取:fread写入文件字符写入:fputc、putc、putchar按行写入:fputs、puts按块写入:fwrite文件位置(光标位置)设置位移:fse......
  • openfeign接口Springboot启动Bean报错未找到Singleton bean creation not allowed whi
    检查步骤检查springboot启动类是否标注@EnableFeignClients注解,未标注该注解会导致无法注入bean检查远程调用模块是否标注注解@FeignClient检查@FeignClient注解中是否写了正确的微服务名称(区分大小写)检查@FeignClient注解中标识的微服务是否启动​​原因:此处接......
  • post请求下载文件,"Content-Type": "application/x-www-form-urlencoded",
    importaxiosfrom"axios";importqsfrom"qs";if(item.resourceName=="导出"){const[startTime="",endTime=""]=this.rangeTime||[];letparams={carNumber:this.carNu......
  • 文件IO学习【二】
    目录文件操作接口说明标准IO标准IO函数介绍打开文件:fopen()fopen使用相关知识补充关闭文件:fclose读取数据字符读取(fgetc)按行读取按块读取写入文件字符写入字符串写入按块写入读取文件位置设置位移获取位移格式访问文件操作接口说明Linux系统为了简化不同类型文件的操作流程,在设计......
  • TextClip构造方法报OSError:MoviePy creation of None failed because of the followi
    在使用moviepy的构造方法创建实例时报错:这可能是两个原因导致的:未安装ImageMagick应用ImageMagick是一套功能强大、稳定而且开源的多平台工具集和开发包,可以用来读、写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG等格式。利用ImageM......
  • 利用标准IO获取当前系统时间并输出到文本
    文件IO思路1.调用接口函数获取系统时间2.将结构体返回的成员值存到变量里3.利用sprintf()将存储的整数转换成字符串并放入缓冲区4.将缓冲区中的内容写入文件代码#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>intmain()//(intargc,c......
  • Airtest部署IOS测试
    **!17一、Airtest部署IOS测试:!**https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/README_zh.mdps:”若访问http://127.0.0.1:8100/inspector报错unknown...........,不用管直接跳过这一步操作,不影响airtest的连接,只要http://127.0.0.1:8100/status......
  • 如何使用stable diffusion设计logo
    好的,我可以帮你写一篇关于如何使用stablediffusion设计logo的文章。这篇文章将从第二级标题开始,主题为:如何使用stablediffusion设计logo。二级标题:什么是StableDiffusion?StableDiffusion是一种尖端的文本到图像扩散模型,可以根据任何给定的文本输入生成逼真的图像。通过使用......
  • VMWare Workstation安装CentOS7使用桥接模式无法ping通问题
    无线网络下VMWare+CentOS7使用桥接模式无法联通网络问题_vmwarecentos桥接模式连不上网-CSDN博客编辑->虚拟网络编辑器VMnet0自动模式不行,要选择对应的网卡;可在网络连接里等方式查看网卡名称;不是管理员身份运行VMWareWorkstation默认不显示VMnet0,右下角有个啥按钮,点击一下......
  • Error: Cannot find module ‘D:\SoftSetupLoaction\nodejs\node_global\node_mod
    Error:Cannotfindmodule‘D:\SoftSetupLoaction\nodejs\node_global\node_modules\npm\bin\npm-cli.js‘  出现原因:重新安装可装了nodejs和npm网上查了很多方法,都建议重装,但是都没有效果(因为我就是重装之后出现的问题)按照错误提示node_global找不到npm-cli.js,个......