编程语言--c
文章平均质量分 61
放晴的时候
这个作者很懒,什么都没留下…
展开
-
strerror()—返回错误原因的描述字符串
头文件:#include 定义函数:char * strerror(int errnum);函数说明:strerror()用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回.返回值:返回描述错误原因的字符串指针.范例1:#include #include #include //exit#include原创 2014-02-13 10:27:49 · 1430 阅读 · 2 评论 -
#ifdef 和 #if defined 的区别
#ifdef 和 #if defined 的区别在于, 后者可以组成复杂的预编译条件, 比如#if defined (AAA) && defined (BBB)xxxxxxxxxx#endif#if defined (AAA) || VERSION > 12xxxxxxxxx#endif 而#ifdef 就不能用上面的用法, 也就是说,当你要判断单个宏是原创 2014-01-15 14:39:16 · 1334 阅读 · 0 评论 -
如何实现可变参数函数
转载自:http://blog.163.com/liuqiang_mail@126/blog/static/1099688752012102335624938/ 通常我们使用的C函数的参数个数都是固定的,但也有不固定的。比如printf()与scanf()。如何自己动手实现一个可变参数函数,这个还是有点技巧的。我们最常用的就是定义一个宏,使用printf或转载 2014-04-16 17:36:14 · 649 阅读 · 0 评论 -
面试题:两个相同struct的变量能否用memcmp比较?
面试的时候,考官问了RT的题目,觉得这题问得比较有水平,所以把它写出来分享。大家知道,结构体里面的变量,如果有的是char型,有的是int型,有的是long型,有的是short型,也有的是未分配的地址等等。想看如下代码:#include #include #include typedef struct{ char a; int b;}原创 2014-04-13 23:50:51 · 2261 阅读 · 1 评论 -
strlen和sizeof的区别
strlen计算不包含终止null字节的字符串长度,而sizeof则计算包括终止null字节的缓冲区长度两者之间的另外一个差别是,使用strlen需要进行一次函数调用,而对于sizeof而言,因为缓冲区已用已知字符串进行了初始化,其长度是固定的,所以sizeof在编译时计算其缓冲区的长度。如:char buf [ ] = " i love this world\n"将其写到标准输出S原创 2013-10-31 10:59:28 · 390 阅读 · 0 评论 -
大小端的区别和判断
在代码中看到往寄存器写数据的时候,使用到 *((volatile uint32_t *)(address)) = cpu_to_le32(value),进一步追踪,#if __BYTE_ORDER == __LITTLE_ENDIAN#define cpu_to_le16(x) (x)#define cpu_to_le32(x) (x)#define SWAP16(x) d原创 2014-01-07 10:03:32 · 1014 阅读 · 0 评论 -
strcpy函数的实现
大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopychar *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = dst;转载 2014-03-06 11:20:10 · 421 阅读 · 0 评论 -
printk()函数的总结 及 和printf()函数的比较
printk()函数的总结我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk原创 2013-11-01 11:51:09 · 568 阅读 · 0 评论 -
unsigned our_inet_addr(cp) char const* cp; { return inet_addr(cp); } 的理解
老版本c中的函数参数声明方式:unsigned our_inet_addr(cp) char const* cp; { return inet_addr(cp); } 等价于:unsigned our_inet_addr(char const* cp) { return inet_addr(cp); }原创 2013-12-18 11:56:08 · 1169 阅读 · 0 评论 -
内存堆分配操作函数的使用(realloc,malloc等)
1.realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);,指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。新的大小一定要大于原来的大小,不然的话会导致数据丢失!如:int *pn=(int *)malloc(5*sizeof(int));变更之后,pn=(int *)rea原创 2014-01-23 17:44:07 · 1313 阅读 · 0 评论 -
C语言union关键字
本文来自http://see.xidian.edu.cn/cpp/html/450.html,感谢分享union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union转载 2014-02-27 10:42:37 · 389 阅读 · 0 评论 -
typedef struct student 和 struct student 的区别
typedef struct student{ int num; struct student *next;}student;struct student{ int num; struct student *next;};第二个struct student是定义了一个student结构体,第一个是用typedef 把 struct s原创 2014-02-14 14:33:18 · 10053 阅读 · 3 评论 -
奇偶校验方法(韦根协议)
最近在了解维根协议方面的内容,ID刷卡现在应用已经非常的普遍了。这里稍微总结下维根协议的知识。韦根协议是国际上同意的标准,由摩托罗拉公司制定的一种通信协议。标准的26bit应该是最常用的一种格式。还有34bit,37bit等韦根协议的数据输出,必须接在MCU的两个可中断GPIO上,这样能及时相应DATA0和DATA1的数据流变化。ID卡模组输出‘0’时,DATA0原创 2014-04-10 14:41:58 · 4444 阅读 · 0 评论