随笔分类 -  C语言

C语言学习
傅里叶变换
摘要:1 #include 2 #include 3 4 typedef char int8_t; 5 typedef unsigned char uint8_t; 6 typedef unsigned short uint16_t; 7 typedef short int16_t; 8 9 #define N 64 //傅里叶变换的点数 10 #define M 6 //蝶形运算的级数,N = 2^M 11 #define N2 32 //N/2 12 #define N4 16 //N/4 13 14 #define... 阅读全文

posted @ 2014-01-06 16:04 ★行云流水★

USB驱动
摘要:从主机侧的立场来看,在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。Linux内核USB核心负责USB驱动管理和协议处理的主要工作。主机控制器驱动和设备驱动之间的USB核心非常重要,其功能包括:通过定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口,向下为USB主机控.. 阅读全文

posted @ 2013-11-21 19:14 ★行云流水★

高低位翻转函数(1、2、4、8字节)
摘要:1 #include 2 3 typedef unsigned char uint8_t; 4 typedef unsigned short uint16_t; 5 typedef short int16_t; 6 typedef unsigned int uint32_t; 7 typedef unsigned long long uint64_t; 8 typedef uint32_t data_type; 9 10 /******************************************************************************* 1... 阅读全文

posted @ 2013-09-12 10:23 ★行云流水★

将一个字节反转
摘要:1 #include 2 3 int main() 4 { 5 unsigned char a = 0xaa, b = 0; 6 char i = 0; 7 for (i = 0; i > i) & 0x01) << (7 - i));10 }11 printf("b = 0x%x\n", b);12 return 0;13 } 阅读全文

posted @ 2013-08-30 17:57 ★行云流水★

产生n个a到b之间的随机数
摘要:1 #include 2 #include 3 #include 4 5 /******************************************************************************* 6 Function: void randnum(int a, int b, unsigned int arr[], int n) 7 Description:产生n个a到b之间的随机数,放入数组arr中。 8 Calls: srand,rand,time 9 Called By:main 10 Input:11 a,b:随机数... 阅读全文

posted @ 2013-08-30 16:55 ★行云流水★

求波峰波谷值
摘要:函数功能:从a组数组中提取size_b个连续的波峰波谷值放入b数组中。 1 #include 2 3 int a[20] = 4 { 5 43, 57, 43, 91, 96, 81, 13, 99, 44, 46, 43, 88, 24, 81, 20, 77, 66, 22, 75, 90 6 }; 7 int b[20]; 8 9 int maxmin(int a[], int b[], int size_a, int size_b)10 {11 int i = ... 阅读全文

posted @ 2013-08-25 19:10 ★行云流水★

标准函数头部注释
摘要:1 /******************************************************************************* 2 Function://函数名称 3 Description://函数功能、性能等的描述 4 Calls://被本函数调用的函数清单 5 CalledBy://调用本函数的函数清单 6 TableAccessed://被访问的表(此项仅对于牵扯到数据库操作的程序) 7 TableUpdated://被修改的表(此项仅对于牵扯到数据库操作的程序) 8 Input://输入参数说明,包括每个参数的作用、取值说明及参数间关系。 9 . 阅读全文

posted @ 2013-08-02 10:19 ★行云流水★

排序
摘要:1 /* 2 排序思想: 3 选择排序是从未排序的数据中选出最小的一个元素顺序放在已经排好序的数 4 列最后。 5 实现方法: 6 将前面第i个数分别与后面的n - i个数比较,大的放后面,小的放前面,这样 7 一轮比较下来,第i个数就是第i~n个数中最小的数。 8 9 */10 void select_sort(int a[], int len)11 {12 int i, j, temp;13 14 for (i = 0; i a[j])19 {20 temp = a[i];21 ... 阅读全文

posted @ 2013-07-18 16:44 ★行云流水★

#define _INTSIZEOF(n)
摘要:问:#define _INTSIZEOF(n)((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 说能够在某些系统中内存对齐.(估计是得到一个2 或者4的整数倍) 这个好象就是(x+3)&~3 这样就能满足对齐了吗? 请从数学上给说说. 谢谢答:对于两个正整数 x, n 总存在整数 q, r 使得x = nq + r, 其中00, 取 (q+1)n. 这也相当于把 x 表示为:x = nq + r', 其中 -n < r' <=0//最大非正剩余nq 是我们所求。关键是如何用 c 语言计算它。由于我们能处理 阅读全文

posted @ 2013-07-15 10:28 ★行云流水★

n进制转换为10进制
摘要:n进制转换为10进制 1 #include <stdio.h> 2 #include <string.h> 3 4 /******************************************************************************* 5 函数名称: int n2dec(char *s, int length, int n) 6 描述:n进制转换为十进制 7 输入参数: 8 s:n进制数字符串 9 length: 字符串s的长度10 返回:转换后的十进制数11 其他:字符串长度不要超过10012 **************** 阅读全文

posted @ 2013-05-31 17:25 ★行云流水★

通过结构中的某个变量获取结构本身的指针 ---- container_of
摘要:问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中: 1 /** 2 * container_of - cast a member of a structure out to the containing structure 3 * @ptr: the pointer to the member. 4 * @type: the type of the container struct this is embedded in. 5 * @member: the name of the member within the ... 阅读全文

posted @ 2013-05-31 11:48 ★行云流水★ 阅读(474) 评论(0) 推荐(0)

编程求数独
摘要:《编程之美》书上并没有这一节,而是我根据“构造数独”一节推广而来的。上一篇我用矩阵的初等变换来构造数独,这一篇我就用DFS(其实我觉得叫递归+回溯更贴切)来求解数独。 具体的步骤我就不啰嗦了,不了解的可以参考任何一本算法书或数据结构的书。递归求解数独并不像网上一些说人的那么慢(一个比较难的数独也是瞬间就解出来了),更不会有栈溢出,处理不当就另当别论。 这个程序采用文件输入,输入的数据格式为:800000000003600000070090200050007000000045700000100030001000068008500010090000400其中0表示要填的空。为了操作方便我用... 阅读全文

posted @ 2013-05-27 08:50 ★行云流水★ 阅读(317) 评论(0) 推荐(0)

寻找子字符串int find_substr(char *s1, char *s2)
摘要:int find_substr(char *s1, char *s2){ int t; char *p, *p2; for (t = 0; s1[t]; t++) //字符串常量是存在数组中的s1[0]就是字符串第一个字符 { p = &s1[t]; p2 = s2; while (*p2 && (*p2 == *p)) //先比较s1,s2的值是不是相等的,不相等就跳过 { //这里的与运算是测试P2是不是到最后字符了就是'\0' ... 阅读全文

posted @ 2013-05-17 17:41 ★行云流水★ 阅读(622) 评论(0) 推荐(0)