![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
文章平均质量分 70
Devour_
刚入行的小程序员~
展开
-
宏定义的正确写法,三目运算的宏定义
转自:宏定义的正确写法,三目运算的宏定义:https://my.oschina.net/iOScoderZhao/blog/916074// 第一阶段/*对象宏*/#define M_PI 3.14159265358979323846264338327950288/*函数宏*/#define PLUS(x,y) x + y// 正确的认识宏 (三目运算的宏定义)// (1)小白写法#define MIN(A,B) A < B ? A : Bint a = MIN(转载 2021-08-17 10:47:02 · 851 阅读 · 0 评论 -
如何安全地关闭文件指针
open函数相关的: /* open 是系统调用 返回的是文件句柄*/#include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);fopen函数相关的: /* open是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api原创 2021-08-13 15:53:31 · 432 阅读 · 0 评论 -
sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
看了题目中的几个函数名是不是有点头晕?为了防止以后总在这样的细节里纠缠不清,今天我们就来好好地辨析一下这几个函数的异同。实验环境:Windows下使用VS2017Linux下使用gcc4.9.4为了验证函数的安全性我们设计了如下结构复制代码const int len = 4;#pragma pack(push)#pragma pack(1)struct Data{char buf[len];char guard;Data(){for (int i = 0; i < len转载 2021-08-12 16:40:36 · 822 阅读 · 0 评论 -
RPM打包原理、示例、详解
RPM(Redhat Package Manager)是用于Redhat、CentOS、Fedora等Linux 分发版(distribution)的常见的软件包管理器。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。看到这篇文章的朋友想必已经知道RPM是个啥,rpm/yum命令怎么用,废话不多说,直接进入正题,来看看RPM包咋打。1 准备首先请准备一个Linux环境,比如CentOS。RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,这个是必装的。$转载 2020-12-16 16:37:21 · 969 阅读 · 1 评论 -
fgets()函数的详解-使用技巧-C语言基础
这篇文章要探讨的是“fgets()函数的详解以及使用时需要注意的一些细节”。涉及fgets()函数的应用和需要注意的问题。属于C语言基础篇(持续更新)。fgets()(函数原型:char *fgets(char *restrict str, int size, FILE *restrict stream))这个函数原型不太好看出个所以然来,可以理解为(char *fgets(“容器的地址”, “容器的大小”, “从哪里读取”))一般用法:char a[100] = {0};fgets转载 2020-12-10 16:08:36 · 47431 阅读 · 9 评论