
c/c++学习笔记
文章平均质量分 61
zmin21
爱玩...而已
展开
-
由数字转换到子网掩码
在描述子网掩码时,我们经常用一个数字来表示,例如192.168.1.1/24,斜线'/'后的24就表示子网掩码为255.255.255.0,而在网络编程的代码中我们更是用一个u8来表示掩码,因为完全没有必要传递一个字符串来表示掩码(当然用u32也行,四个字节用点分开就是).这里我介绍一种简单的方法将n转换为点分十进制的掩码形式:#include#define LMOVE(m,n) ((m)原创 2017-01-04 18:22:20 · 5605 阅读 · 2 评论 -
强大的sscanf函数
函数原型int sscanf( const char *buffer, const char *format, [ argument ] … ); 参数说明buffer 存储的数据 format 窗体控件字符串。 有关详细信息,请参阅”格式规范”。 argument 可选自变量 locale 要使用的区域设置 头文件sscanf 说明ssca原创 2017-05-24 16:55:55 · 266 阅读 · 0 评论 -
sprintf是一个很好的工具
案例之前有个想法就是我有一个double的浮点数,但是要转换成字符串,也就是说要 3.141592-->"3.121592",也不好意思先把小数点前后的值分别用itoa再拼起来的。当然,用sprintf格式化输入是个好办法!代码#include<stdio.h>void main(){ double dou = 123.14780; char sx[20]; sprin原创 2017-05-25 10:03:18 · 336 阅读 · 0 评论 -
查询目录或文件是否存在
问题的引入在项目中可能会遇见查询某个路径或者文件是否存在的情况,如果不存在就新建。在看代码的时候发现有人这样实现:dir = opendir(g_logDir); if ( dir == NULLP ) { mkdir(g_logDir, O_RDWR); } else { closedir(dir); }对应文件的原创 2017-06-09 17:18:31 · 1738 阅读 · 0 评论 -
gcc编译错误长期收集汇总
自己手写代码的时候感觉一切良好,但是在编译的时候会出现奇奇怪怪的错误,一大类是粗心造成的语法错误,还有就是编译条件 不满足导致,这个很多比如变量没定义,重定义等. 编译器一般会指出在哪个文件哪行出现错误,其实这已经很好定位了,要是明白编译器说的具体是什么情况导致编译不过,这样事情会好办的多!代码编译过是前提,编译不过的代码是没有意义的,另外提出一下,项目中提交代码一定要事先编译通过并进行自测,将自原创 2017-06-12 21:11:44 · 1950 阅读 · 1 评论 -
宏定义中的 # , ##以及 _ _VA_ARGS_ _ 的作用
1. ‘#’假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化.#incldue <stdio.h>#define PSQR(x) printf("the square of" #x "is %d./n",(x)*(x))int原创 2017-06-12 22:00:57 · 342 阅读 · 0 评论 -
编译中重定义错误的处理--头文件的写法
###编译中重定义错误的处理 在编译代码的时候会有各种各样的错误,本文主要说下重定义的错误处理。这个大家应该都遇见过,无非就是变量或者函数定义重复了啊,对,简单来说就是这样的,经常出现先复制变量或者代码的时候忘记改名,这种根据题提示很好解,另外就是头文件书写错误时候会出现。###头文件的写法 这里给出正常的头文件(hh.h)的书写形式,我们写代码经常一个源文件.c与匹配一个头文原创 2017-06-13 19:46:51 · 3429 阅读 · 0 评论 -
记录log宏定义可变参数的几种处理方式
用GCC和C99的可变参数宏, 可以更方便地打印调试信息,在gcc的预处理提供的可变参数宏定义非常方便,具体大致有以下3种方式。1. ##args#ifdef DEBUG #define dbgprint(format,args...) fprintf(stderr, format, ##args)#else #define dbgprint(format,args...)#en原创 2017-06-12 21:54:57 · 659 阅读 · 0 评论 -
数组是“二等公民”的话题
数组是“二等公民”数组不能直接赋值作为参数传递会退化为指针不能作为函数返回值数组不能直接赋值我们都知道,简单的变量类型,不如int 和 char ,是可以直接赋值的:int a = 1; int b = 2; b =a;//赋值操作但是如果是数组,int a[3] = {1,2,3}; int b[3] = {0}; 是无法操作a = b的。另外值得说明的是...原创 2018-09-05 14:04:06 · 433 阅读 · 0 评论