您正在查看: 编程语言 分类下的文章
linux多线程电梯小程序实例
源码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
typedef str...阅读全文
do{}while(0)用法详解
1、定义复杂的宏以避免错误 do{...}while(0)在C中是唯一的构造程序,让你定义的宏总是以相同的方式工作,这样不管怎么使用宏(尤其在没有用大括号包围调用宏的语句),宏后面的分号也是相同的效果。
示例
#define foo(x) bar(x); baz(x)
foo(wolf);等价于bar(wolf); baz(wolf);
if(condition)foo(wolf);等价...阅读全文
GNU C之内存对齐
四种改变编译器默认对齐方式的方法:(1)使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。(2) 使用伪指令#pragma pack (),取消自定义字节对齐方式。(3)__attribute((aligned (n))),让所作用的结构成员对齐在n字节自然边界上。如果结构中有成员的长度大于n,则按照最大成员的长度来对齐。(4)__attribute__ ((packe...阅读全文
常见字符串处理库函数实现
1.strchr2.strstr3.strcat4.strcpy5.strncpy6.strcmp7.strncmp8.atol9.atoisize_t类型 typedef unsigned int size_t;
<h3 id="1">1、strchr</h3> /***
*char *strchr(string, c) - se...阅读全文
jQuery顶部按钮实现
http://www.scrolltotop.com/国外的一个网站,提供多达几十种的按钮实现,很好的参考!如下:阅读全文
字符串匹配-BruteForce暴力匹配
BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。算法思想:1、依次从主串的首字符开始,与模式串逐一进行匹配;2、遇到失配时,则移到主串的第二个字符,将其...阅读全文
正确的使用snprintf
1、原型 #include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(c...阅读全文
GNU结构体中的0长数组使用
在标准 C 和 C++ 中,不允许用 0 长度数组,但在 GNU C 中,却可以定义 0 长度数组;struct line
{
int length ;
char contents[0];
};
0 长度数组不占有空间,从打印 sizeof (struct line) 可以看到这个结构体的长度为 4,这 4 字节空间属于整型量 length 。那么结构体里最后的 0 长度...阅读全文
linux内核list.h之链表hlist
1、数据结构//hash桶的头结点
struct hlist_head
{
struct hlist_node *first;//指向每一个hash桶的第一个结点的指针
};
//hash桶的普通结点
struct hlist_node
{
struct hlist_node *next, **pprev;
};
next指向下一个结点的指针
pprev指向上一个结点的ne...阅读全文