C语言程序设计
文章平均质量分 76
sfrysh
嵌入式开发,本博客大部分资源来自网络,为学习交流之用,如有侵犯你您的版权,实属无心,请给本人留言,本人会及时删除。
展开
-
snprintf函数用法
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。Result1(推荐的用法)#include #转载 2010-05-25 16:59:00 · 2742 阅读 · 1 评论 -
C语言宏定义##连接符和#符的使用
<br />C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。 <br />关于#和##<br />在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏: <br />#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Wa转载 2011-03-07 19:24:00 · 943 阅读 · 0 评论 -
linux access函数判断文件存取权限
<br />access(判断是否具有存取文件的权限)<br />相关函数<br /> stat,open,chmod,chown,setuid,setgid<br />表头文件<br /> #include<unistd.h><br />定义函数<br /> int access(const char * pathname,int mode);<br />函数说明<br /> access()会检查是否可以读/写某一已存在的文件。参数mode有几种情况组合, R_OK,W_OK,X_OK 和F_OK。R_转载 2011-02-23 21:39:00 · 1901 阅读 · 0 评论 -
关于c语言的sizeof
<br />最近在看林锐博士的高质量c/c++编程指南,在书的后面附了一张测试的卷子,做了一下,发现自己很多都是处于半懂半不懂得阶段,比如下面这道关于sizeof的题目:<br /> <br /> <br />1、void Func ( char str[100]) <br />{ <br />请计算<br /> sizeof( str ) = 4 (2 分)<br />} <br /> <br />2、char str[100 ] = {0} ; <br />char *p =转载 2011-03-24 20:46:00 · 1426 阅读 · 0 评论 -
字符串处理函数
一.size_t strlen ( const char * str );Get string lengthReturns the length of str.The length of a C string is determined by the term原创 2011-09-18 18:37:57 · 636 阅读 · 0 评论 -
strstr
原型:extern char *strstr(char *haystack, char *needle); 用法:#include 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 举例:转载 2010-09-09 16:41:00 · 841 阅读 · 0 评论 -
C语言:typedef
typedef是用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. 用typedef定义类型的方法① 先按定义变量的方法写出定义体(如:int i)。② 将变量名换成新类型名(例如:将i换成COUNT)。③ 在最前面加typedef. (例如:typedef int COUNT)。④ 然后可以用新类型名去定义变量。 说明:(1)转载 2011-10-29 00:27:42 · 796 阅读 · 0 评论 -
glibc的几个有用的处理二进制位的内置函数
— Built-in Function: int __builtin_ffs (unsigned int x)Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero.返回右起第一个‘1’的位置。— Built-in Function: in转载 2011-11-25 13:31:05 · 1194 阅读 · 0 评论 -
小议C语言中数据的存储类型
作者:李慧芹,华清远见嵌入式学院讲师。C语言中的一些说明和定义会用到存储类型这样一个概念,在C语言中存储类型会用到下述几个关键字:auto,static,register,extern。看下面的简略图大家可以明确程序在进行存储时是分为三个区域的,分别为代码段,数据段和bss段,用于存储不同类型和状态的变量,而运行起来系统会再为其添加2个段,一个是堆,一个是栈,而我们手动进行的内存空间的申请转载 2012-03-30 21:44:38 · 1315 阅读 · 1 评论 -
C语言的常用类型转换函数(atoi,atol,strtod,strtol,strtoul)
<br />atof(将字符串转换成浮点型数)<br />相关函数<br /> atoi,atol,strtod,strtol,strtoul<br />表头文件<br /> #include <stdlib.h><br />定义函数<br /> double atof(const char *nptr);<br />函数说明<br /> atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('')才结束转转载 2011-03-01 20:16:00 · 1076 阅读 · 0 评论 -
epoll使用
<br />epoll使用<br /> epoll的工作原理是,你如果想进行IO操作时,先向epoll查询是否可读或可写,如果处于可读或可写状态后,epoll会通过epoll_wait函数通知你,此时你再进行进一步的recv或send操作。<br /> epoll仅仅是一个异步事件的通知机制,其本身并不作任何的IO读写操作,它只负责告诉你是不是可以读或可以写了,而具体的读写操作,还要应用层自己来作。epoll仅提供这种机制也是非常好的,它保持了事件通知与IO操作之间彼此的独立性,转载 2011-03-01 10:35:00 · 1326 阅读 · 0 评论 -
container_of()宏
指针ptr指向结构体type中的成员member;通过指针ptr,返回结构体type的起始地址<br /> type<br /> |----------|<br /> | |<br /> | |<br /> |----------|<br />ptr-->| member--|<br /> |----------|<br /> | |<br /> |转载 2011-01-19 10:33:00 · 716 阅读 · 0 评论 -
memcpy() -- 拷贝内存内容
memcpy() -- 拷贝内存内容2007年07月06日 星期五 09:07相关函数: bcopy(), memccpy(), memmove(), strcpy(), strncpy()<br />表头文件: #include <string.h><br />定义函数: void *memcpy(void *dest, const void *src, size_t n)<br />函数说明: memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,转载 2010-07-28 17:34:00 · 697 阅读 · 0 评论 -
isspace
<br />原型:extern int isspace(int c);<br /> <br /> 用法:#include <ctype.h><br /> <br /> 功能:判断字符c是否为空白符<br /> <br /> 说明:当c为空白符时,返回非零值,否则返回零。<br /> 空白符指空格、水平制表、垂直制表、换页、回车和换行符。<br /> <br /> 举例:<br /><br /> // isspace.c<br /> <br /> #inc转载 2010-09-09 16:42:00 · 1055 阅读 · 0 评论 -
tolower
<br />原型:extern int tolower(int c);<br /> <br /> 用法:#include <ctype.h><br /> <br /> 功能:将字符c转换为小写英文字母<br /> <br /> 说明:如果c为大写英文字母,则返回对应的小写字母;否则返回原来的值。<br /> <br /> 举例:<br /><br /> // tolower.c<br /> <br /> #include <syslib.h><br />转载 2010-09-09 16:44:00 · 637 阅读 · 0 评论 -
malloc,calloc,realloc等内存分配函数区别
<br />三个函数的声明分别是:<br />void* realloc(void* ptr, unsigned newsize);<br />void* malloc(unsigned size);<br />void* calloc(size_t nelem, size_t elsize);<br />都在stdlib.h函数库内<br />它们的返回值都是请求系统分配的地址,如果请求失败就返回NULL<br />malloc用于申请一段新的地址,参数size为需要内存空间的长度,如:<br />cha转载 2010-09-01 10:58:00 · 755 阅读 · 0 评论 -
嵌入式C语言中的volatile关键字
<br />/*********以下是转载《16道嵌入式C语言面试题中的一题》***********/<br />关键字volatile有什么含意 并给出三个不同的例子。 <br />一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去 <br />假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读 <br />取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br />1). 并行设备的硬件寄存器(如:状转载 2010-09-14 10:26:00 · 1087 阅读 · 0 评论 -
Linux C :遍历输出指定目录下的所有文件
在Linux下opendir()、readdir()和closedir()这三个函数主要用来遍历目录。在使用这三个函数前必须先包括以下两个头文件:#include <sys/types.h>#include <dirent.h><br /><br />opendir函数的原型为:<br />DIR *opendir(const char *name);它返回一个DIR*类型,这就是一个句柄啦,你不用管它的内部结构是什么样的,只要知道这个句柄就是等一下要传给readdir()函数的参数就行了。<br /><b转载 2010-11-29 20:41:00 · 2287 阅读 · 0 评论 -
C语言数据类型:联合(union)
<br />1. 联合说明和联合变量定义 <br /> 联合也是一种新的数据类型, 它是一种特殊形式的变量。 <br /> 联合说明和联合变量定义与结构十分相似。其形式为: <br /> union 联合名{ <br /> 数据类型 成员名; <br /> 数据类型 成员名; <br /> ... <br /> } 联合变量名; <br /> 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 <br /转载 2010-11-08 10:12:00 · 1063 阅读 · 0 评论 -
内核中的 likely() 与 unlikely()
<br />在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? <br /><br />首先要明确:<br /> if(likely(value)) 等价于 if(value)<br /> if(unlikely(value)) 也等价于 if(value)<br />也就是说 likely() 和 unlikely() 从阅读和理解代码的角度来看,是一样的!!!<br /><br />这转载 2010-11-21 16:55:00 · 806 阅读 · 0 评论 -
细说C语言的优先级
0. 为什么要掌握优先级 想想这两个问题: a. 读别人的代码,遇到优先级问题看不懂,怎么办? b. 一堆的括号,美观吗? 本想贴一张画来装饰墙壁,却用了一堆纸来固定! 有人说代码写多了,自然就会了。这个是很宽泛的说法。看你写的代码的水准,有些转载 2013-04-10 19:36:22 · 1969 阅读 · 0 评论