库函数相关(上一篇补充)

news2024/12/23 0:00:19

一、创建自己的头文件 

  1. 在当前目录下创建一个my_head.h
  2. 将这个文件移动到/usr/include目录
#ifndef __MY_HEAD_H__
#define __MY_HEAD_H__

#include <stdio.h>
#include <errno.h>
#include <string.h>

#define PRINT_ERR(s) do{\
                        printf("%s %s %d\n",__FILE__,__func__,__LINE__);\
                        perror(s);\
                        return -1;\
                    }while(0)

#endif

二、fgets(从文件中获取一个字符)

#include <stdio.h>
int fgets(FILE *stream);
功能:从stream代表的文件中获取一个字符
参数:
    stream:文件指针
返回值:返回获取到的字符,失败或读到文件结尾返回EOF
//fgetc获取一个字符之后,光标会自动向后偏移一个字节
fgets(stdin) == getchar()

fgetc使用示例

#include <my_head.h>

int main(int argc, const char *argv[])
{
	FILE *fp = fopen("./b.c","r");
	if(NULL == fp){
		PRINT_ERR("fopen b.c error");
	}
	char ch = 0;
	if(EOF == (ch = fgetc(fp))){
		printf("fgetc error\n");
		return -1;
	}
	printf("ch = %c\n",ch);//输出

    if(EOF == (ch=fgetc(fp))){
        printf("fgetc error\n");
        return -1;
    }printf("ch = %c\n",ch);//输出

	return 0;
}

运行结果:

三、fputs (向文件中放入一个字符)

#include <stdio.h>
int fputc(int c,FILE *stream);
功能:将字符串c写入到stream代表的文字中
参数:
    c:要写入的字符
    stream:文件指针
返回值:成功返回写入字符的ascii码,失败返回EOF

fputc应用实例

#include <my_head.h>

int main(int argc, const char *argv[])
{
	FILE *fp = fopen("./b.c","r+");
	if(NULL == fp){
		PRINT_ERR("fopen error");
	}
	fputc('y',fp);
	fputc('z',fp);

	fclose(fp);
	
	return 0;
}

运行结果:

四、fgets(从文件中获取字符)

#include <stdio.h> -- 所需头文件
char *fgets(char *s,int size,FILE *stream);
功能:从stream中获取字符串,获取size-1个字符(补尾0),
      遇到换行符会停止,同时会将换行符读取到s中。
参数:
    s:保存获取到的字符串的字符数组的首地址
    size:要获取的字符串的长度
    stream:成功返回读取到的字符串,失败或者读取到文件结尾返回NULL

fgets代码示例:

#include <my_head.h>

int main(int argc, const char *argv[])
{
	FILE *fp = fopen("./b.c","r+");
	if(NULL == fp){
		PRINT_ERR("fopen error");
	}

	char buf[128] = {0};

	fgets(buf,sizeof(buf),fp);
	buf[strlen(buf)-1] = '\0';//清除换行符

	printf("buf = [%s]\n",buf);
	return 0;
}

运行结果:

五、fputs(向文件中写入字符)

#include <stdio.h> -- 所需头文件
int puts(const char *s,FILE *stream);
功能:向stream中放入s这个字符串
参数:
    s:要放入的字符串的首地址
    stream:要操作的文件
返回值:成功返回非负数,失败返回EOF

fputs示例代码

#include <my_head.h>

int main(int argc, const char *argv[])
{
	FILE *fp = fopen("b.c","r+");
	if(NULL == fp){
		PRINT_ERR("fopen error");
	}
	char buf[128] = {0};

	//stdin从终端输入字符串
	fgets(buf,sizeof(buf),stdin);
	buf[strlen(buf)-1] = '\0';

	//使用fputs将内容输入到fp指针指向的文件中
	fputs(buf,fp);

	fclose(fp);

	return 0;
}

运行结果:

六、获取系统时间

man man

#inlcude <time.h>
time_t time(time_t *tloc);
功能:返回的是1970年1月1日,0:0:0到现在的秒数
参数:
    tloc:保存获取到的秒数的变量的首地址
返回值:成功返回获取到的秒数,失败返回(time_t)-1 --- 强制类型转换(time_t)

用法1:
time_t tm = 0;
tm = tiem(NULL);

用法2:
time_t tm = 0;
time(&tm);

time函数应用实例

#include <my_head.h>
#include <time.h>

int main(int argc, const char *argv[])
{
	//用法1
	time_t tm1 = 0;
	tm1 = time(NULL);
	printf("time = [%ld]\n",tm1);

	//用法2
	time_t tm2 = 0;
	time(&tm2);
	printf("time = [%ld]\n",tm2);

	return 0;
}

运行结果:

6.1 localtime函数的使用

struct tm *localtime(const time_t *timep);
功能:将time函数获取的秒数转化为实际的时间(人能看懂的)
参数:
    timep:time函数获取到的秒数
返回值:
 struct tm {
               int tm_sec;    秒数 0 ~ 60 
               int tm_min;    分钟数 0~59 
               int tm_hour;   小时数 0~23 
               int tm_mday;   一个月的第几天(0~31)
               int tm_mon;    月份 (0-11) 用的时候需要+1
               int tm_year;   Year - 1900 用的时候需要+1900
               int tm_wday;   一个星期的第几天 
               int tm_yday;   一年的第几天 

           };

localtime函数使用示例

#include <my_head.h>
#include <time.h>

int main(int argc, const char *argv[])
{
	struct tm *nice_time;
	time_t tm = 0;
	time(&tm);

	nice_time = localtime(&tm);

	//输出
	printf("%d年%d月%d日 %d时%d分%d秒\n",\
			nice_time->tm_year+1900,nice_time->tm_mon+1,\
			nice_time->tm_mday,nice_time->tm_hour,\
			nice_time->tm_min,nice_time->tm_sec);
	
	return 0;
}

运行结果:

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

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

相关文章

MongoDB初学者入门教学:与MySQL的对比理解

&#x1f3dd;️ 博主介绍 大家好&#xff0c;我是一个搬砖的农民工&#xff0c;很高兴认识大家 &#x1f60a; ~ &#x1f468;‍&#x1f393; 个人介绍&#xff1a;本人是一名后端Java开发工程师&#xff0c;坐标北京 ~ &#x1f389; 感谢关注 &#x1f4d6; 一起学习 &…

JavaEE: HTTPS的魅力与优势揭秘

文章目录 HTTPSHTTPS 是什么HTTPS 基本工作过程Fiddle 等抓包工具,为啥能解析 HTTPS 的数据? HTTPS HTTPS 是什么 HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层. 几个核心概念: 明文: 要传输的原始数据.密文: 把明文进行加密之后得到一个让别人不能理解…

【算法篇】三道题理解什么是递归,回溯和剪枝

递归&#xff0c;回溯&#xff0c;剪枝 想必大家再学习算法知识的路上经常听到回溯&#xff0c;剪枝类似的概念&#xff0c;对于初学者来说&#xff0c;很容易把他们理解成一种新的算法思想&#xff0c;其实回溯和剪枝只是在递归的基础上稍加修改&#xff0c;对于解决某些特定问…

k8s的pod的管理

常用的Pod基础命令 列出所有命名空间中的所有Pod kubectl get pods --all-namespaces 列出指定命名空间中的所有Pod kubectl get pods -n <namespace> 显示指定Pod的详细信息&#xff0c;包括状态、事件等 kubectl describe pod <pod-name> -n <namespace>…

机器学习入门(一)

一、机器学习概述 1、人工智能 像人一样智能的综合与分析&#xff0c;机器模拟人类。 是一个系统&#xff0c;像人那样思考&#xff0c;像人那样理性思考。 是一个系统&#xff0c;像人那样活动&#xff0c;像人那样合理的系统 2、机器学习 让机器自动学习&#xff0c;而不…

SAP将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4]

将假脱机(Spool requests)内容转换为PDF文档[RSTXPDFT4] 有时需要将Spool中的内容导出成PDF文件&#xff0c;sap提供了一个标准程序RSTXPDFT4可以实现此功能。 1, Tcode:SP01, 进入spool requests list 2, SE38 运行程序RSTXPDFT4 输入spool reqeust号码18680&#xff0c;然后…

excel 单元格嵌入图片

1.图片右键,设置图片格式 2.属性 随单元格改为位置和大小 这样的话&#xff0c;图片就会嵌入到单元格&#xff0c;也会跟着单元格的大小而改变

10-记录器

这个功能允许记录和重现以前的模拟。所有发生的事件都记录在记录器文件 recorder file中。 1 记录 所有数据仅在服务器端以二进制文件的形式写入。但是&#xff0c;记录器是使用 carla.Client管理的。 注意&#xff1a;在回放结束时&#xff0c;车辆将被设置为自动驾驶&#xf…

强化学习和QLearning及GAN到底是什么关系啊

强化学习&#xff08;Reinforcement Learning&#xff09;、Q-Learning 和生成对抗网络&#xff08;GANs&#xff09;是机器学习中的三个不同概念&#xff0c;它们虽然有一些交叉&#xff0c;但本质上是针对不同问题的技术方法。下面我来详细解释它们之间的关系和区别&#xff…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

链表Set_LinkList(并集)

并集是把两个集合合并&#xff0c;去除重复元素后组成的集合。 通过键盘输入将两个集合保存在链表A和链表B中&#xff0c;再创建一个链表C用于保存集合A、B的并集&#xff0c;将链表C打印输出。 提示&#xff1a; 1.相对于上一题&#xff08;链表Set_LinkList&#xff08;建立&…

java 微服务 端口冲突 redis虚拟磁盘满 nacos挂

java 微服务 端口冲突 哥 排除法呀 什么卸载软件QAQ netstat -ano | findstr :48080 输这个呀 然后 taskkill /PID 1234 /F redis虚拟磁盘满 导致 假死 挂了 nacos 挂了重启 nacosrun.bat startup -m standalone

facebook受众选择设置策略的最佳方式

在进行Facebookguanggao投放时&#xff0c;受众的选择是一个至关重要的步骤。正确的受众选择不仅能够帮助我们更好地定位目标用户&#xff0c;还能显著提高guanggao的转化率和投资回报率&#xff08;ROI&#xff09;。然而&#xff0c;受众选择的数量和范围同样是需要认真考虑的…

QtDesign预览的效果与程序运行的结果不一致的解决方法

存在的问题 使用Qt designer软件设计出来的界面&#xff0c;与转换成python程序运行出来的结果不一致&#xff0c;具体看下图 Qt designer预览结果 程序运行出来的结果 原因分析 我自己的电脑是2560*1600分辨率的屏幕&#xff0c;采用的是200%的缩放比例&#xff0c;出现这种…

虚拟机没有网络怎么解决

CentOS7为例 进入虚拟网络编辑器 1.更改设置 2.选中NAT模式点击3点击移除网络 4添加网络&#xff0c;随便选一个 5.点开NAT设置&#xff0c;记住网关 6.DHCP设置&#xff0c;注意虚拟机设置ip必须在起始ip和结束ip范围内 进入虚拟机网络适配器&#xff0c;自定义选中第4步操作…

Tailwind Css的使用

1.Tailwind Css是什么 官网解释&#xff1a;Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类&#xff08;class&#xff09;名&#xff0c;然后生成相应的样式代码并写入 到一个静态 CSS 文件中。 我的理解是利用Tailwind CSS 提供的…

Element-快速入门

什么是 Element 在现代前端开发中&#xff0c;组件化的思想日益盛行&#xff0c;Element组件库作为一款流行的UI组件库&#xff0c;特别适用于基于Vue.js的项目&#xff0c;它为开发者提供了丰富的组件和良好的开发体验。 想要使用Element的组件库&#xff0c;我们需要完成下面…

基于opencv的人脸闭眼识别疲劳监测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

基于函数计算FC 部署 ComfyUI实现AI生图 的优势

基于函数计算FC 部署 ComfyUI实现AI生图 的优势 部署ComfyUI实现AI生图使用函数计算FC 一键部署ComfyUI 绘画平台的优势有哪些&#xff1f; 在文章开始之前&#xff0c;先来看一下基于函数计算FC 部署 ComfyUI实现AI生图 的大概步骤&#xff0c;整个基础部署操作比较简单。即便…

《Programming from the Ground Up》阅读笔记:p181-p216

《Programming from the Ground Up》学习第10天&#xff0c;p181-p216总结&#xff0c;总计34页。 一、技术总结 第10章主要讲计算机是如何计算的&#xff0c;如十进制、二进制、八进制、十六进制以及浮点数和负数的表示。属于比较基础的内容&#xff0c;如果有一定基础&…