
C语言
expleeve
当我看到现在身边的人时,我在想,自己是不是该专注于某件事了
展开
-
警告:隐式声明与内建函数‘malloc’不兼容
添加#include #include ...原创 2010-09-02 16:31:00 · 2720 阅读 · 0 评论 -
类似strstr/strcpy/strpbrk函数的实现
第一节、字符串查找1.1题目描述:给定一个字符串A,要求在A中查找一个子串B。如A="ABCDF",要你在A中查找子串B=“CD”。分析:比较简单,相当于实现strstr库函数,主体代码如下://在字符串中查找指定字符串的第一次出现,不能找到则返回-1 int strstr(char *string, char *substring) {转载 2012-04-13 14:42:12 · 2340 阅读 · 0 评论 -
关于计算机如何做加法
题目:实现int add(int a, int b)方法,实现a和b的和,但是内部不允许使用+-*/等算术运算。解答:这个题考查的其实是对计算机硬件如何做加法的。计算机内做加法和乘法都是模拟人做加法和乘法的方法来设计和实现cpu算术运算模块的。这在我们学习计算机组成原理的课程时应该学到过。如下面例子:1101 11+--------------10000这个计算可转载 2012-04-10 19:36:35 · 5650 阅读 · 0 评论 -
KMP算法
主串:"s1...sn"子串:"p1...pm""p1p2...p(k-1)" = "s(i-k+1)s(i-k+2)...s(i-1)" //上次比较了K个相同的字符"p(j-k+1)p(j-k+2)...p(j-1)" = "s(i-k+1)s(i-k+2)...s(i-1)" //这次比较了K个相同的字符"p1p2...p(k-1)" = "p(j-k+1)p(j-k+2原创 2012-01-02 20:13:31 · 785 阅读 · 0 评论 -
自加运算符
今天遇到一个问题 int i =3,j; j = (++i) + (++i) + (++i); printf("%d",j);打印结果是 16_main: pushl %ebp movl %esp, %ebp subl原创 2011-10-01 21:00:33 · 2397 阅读 · 1 评论 -
Linux下C语言编程--信号处理函数
Linux下C语言编程--信号处理函数作者:hoyt前言:这一章我们讨论一下Linux下的信号处理函数.Linux下的信号处理函数:1.信号的产生2.信号的处理3.其它信号函数--------------------------------------------------------------------------------一个实例1。信号的产生Linux下的信号可以类比于DOS下的INT或者是Windows下的事件.在有一个信号发生时候转载 2011-03-23 16:41:00 · 960 阅读 · 0 评论 -
UTF-8编码
<br />最近,使用freetype 2 显示中文,遇到了一下乱码的问题。<br />网上关于UTF-8编码的介绍已经有很多,不多做介绍;这里对如何 获取UTF-8编码 做个记录。<br /> <br />unsigned long get_utf8_code(unsigned char * pcode) { unsigned long result=0; //0XXXXXXX if ((*pcode)<0x80) { result += (*pcode)&0x7f;原创 2011-03-07 16:58:00 · 537 阅读 · 0 评论 -
链表的用法
<br />学习数据结构的时候,链表感觉比较简单,但是总是不太用它。<br /> <br />比如说最近经常用的<br />struct struct1{<br /> void *data;<br /> struct struct1* next;<br />};<br /> <br />同时对其进行封装,如get,set,insert,append,delete等方法。<br /> <br />这样对于数据整体的操作都很明了,屏蔽了底层的操作。<br /> <br />不同类型的结构之间即使有原创 2011-01-25 16:22:00 · 650 阅读 · 0 评论 -
C语言中的符号重载
转载自《C专家编程》符号 意义static 在函数内部,表示该变量的值在各个调用间一直保持延续性 在函数这一级,表示该函数只对本文件可见extern 用于函数定义,表示全局可见 用于变量,表示它在其他地方定义void 作为函数的返回类型,表示不返回任何值 在指针声明中,表示通用指针的类型转载 2010-10-25 22:17:00 · 573 阅读 · 0 评论 -
C语言运算符优先级存在的问题
优先级问题表达式人们可能误以为的结果实际结果. 的优先级高于*->用于消除这个问题*p.fp所指向对象的字段f(*p).f对p取f偏移,作为指针,然后进行解除引用操作。*(p.f)[]高于*int *ap[]ap是指向int数组的指针 int (*ap)[]ap是个元素为int的指针的数组 int *(ap[])函数()高于*int *fp()fp是个函数指针,所知函数返回int int (*fp)()fp是个函数,返回int* int *(fp())==和!=高于位操作符Val & mask !=转载 2010-10-25 22:36:00 · 626 阅读 · 0 评论 -
面向对象的C语言编程
<br /> 面向对象的技术成为主流以前许多年,C语言的编程者使用C语言支持模块是的编程风格,使用这种方法,就可以即在C中创建“基于文件的类”,又不增加许多内存或CPU的负载。文件变成了我们的类,且文件中“static”数据成为该类的私有数据成员,该文件中定义的 函数成为文件类的 成员函数,并且我们的整个程序可以分成许多清晰定义的(基于文件的)类。<br /> 将一个单一文件的程序转为面向对象的C文件<br /> 规则:<br /> 1.公有“成员”函数,在.h文件中有他们的转载 2010-12-08 17:31:00 · 815 阅读 · 0 评论 -
文件类型识别
<br /> 在做考勤机的时候,遇到过从浏览器端向后台传输图片的操作,这个操作当时是通过把图片分片,以二进制流的形式传输到后台,然后在后台恢复为源文件。<br /> 在上传文件的时候,需要对用户选择的文件类型进行判断,当然,这里最简单的方法莫过于直接判断后缀名即可,只需要读取文件名,然后判断文件的后缀,就可以判断上次文件的类型。<br /> 这种方法很容易想到,但是这种方法很不安全,当用户把文件后缀改为可选文件后缀的时候,就会造成恶意上传文件。<br /> 那么就要考虑对文件本身进行原创 2010-09-26 21:47:00 · 1865 阅读 · 0 评论 -
30行C代码的正则表达式匹配器
<br />《The Practice of Programming》一书的第9章中包含了这段代码。<br />********************************<br />匹配以下的模型:<br />字符 含义<br />c 匹配任意的字母c<br />.(句点)匹配任意的单个字符<br />^ 匹配输入字符串的开头<br />$ 匹配输入字符串的结尾<br />* 匹配前一个字符的零个或者多个出现<br原创 2010-09-02 16:44:00 · 867 阅读 · 0 评论 -
C 值传递、地址传递、引用传递
<br />昨天遇到一个问题:<br />***************************************************************<br />程序一:<br />char str[256] ="";<br />char *sp = str;<br />visitDepart(&rs,rs.column,sp);<br />**************************<br />static void visitDepart(result_t * rs, int原创 2010-09-02 16:43:00 · 3576 阅读 · 1 评论 -
想成为嵌入式程序员应知道的0x10个基本问题
<br />预处理器(Preprocessor)<br />1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)<br />#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL<br />我在这想看到几件事情:<br />1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)<br />2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价转载 2010-09-02 17:01:00 · 493 阅读 · 0 评论 -
C语言读取多媒体文件的一个函数
写代码要像写诗#include #define MAX_REQUEST_SIZE 1024int main(){ unsigned char string[MAX_REQUEST_SIZE]; FILE*fp; FILE*fp2; char* filename ="search.JPG"; char* filename2="search1.JPG"; int size=0; int i=0;原创 2010-09-02 16:41:00 · 1171 阅读 · 0 评论 -
sizeof举例
<br />第一个例子:<br />char* ss = "0123456789";<br />sizeof(ss)<br />结果 4 ===》ss是指向字符串常量的字符指针<br />sizeof(*ss)<br /> 结果 1 ===》*ss是第一个字符<br />char ss[] = "0123456789";<br />sizeof(ss)<br /> 结果 11 ===》ss是数组,计算到/0位置,因此是10+1<br />sizeof(*ss)<br />结果 1 ===》*ss是第一个字符原创 2010-09-02 16:32:00 · 798 阅读 · 0 评论 -
##在宏定义中的含义
<br />## 连接符与# 符<br /><br />## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所 谓的子串 (token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当 成字符串进行替代。<br /> <br />#define paster( n ) printf( "token" #n " = %d", toke原创 2010-09-02 16:19:00 · 924 阅读 · 0 评论 -
实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
http://www.cnblogs.com/yuuyuu/p/5103744.html转载 2016-10-30 09:40:58 · 998 阅读 · 0 评论