C 和算法
文章平均质量分 85
exbob
Linux
展开
-
C语言的参数可变函数
<br />环境:fedora12,gcc4.4.4。<br /> <br /><br />C语言参数个数可变的函数,叫做VA函数(variable argument function),例如printf()函数。要实现VA函数需要包含stdarg.h:<br />#include <stdarg.h><br />主要使用下面三个宏定义:<br />va_start(ap, A)<br />va_arg(ap, T)<br />va_end(ap)<br /> <br /><br />ap是类型是va_li原创 2011-05-17 22:55:00 · 1080 阅读 · 0 评论 -
使用GNU Autoconf/Automake创建Makefile
原文:How To Create a GNU Autoconf / Automake Based Configure Script for Your Applicationhttp://www3.fh-swf.de/fbin/roth/download/prg3.howto_autoconfmake.pdf by Prof.Dr. Walter RothUniversity of翻译 2011-11-21 22:55:43 · 4912 阅读 · 0 评论 -
pkg-config指南
原文:Guide for pkg-confighttp://people.freedesktop.org/~dbn/pkg-config-guide.html Dan NicholsonTranslated By Bob2011-11-13Email:gexbob@gmail.comBlog:http://blog.csdn.net/exbob ------翻译 2011-11-19 15:16:07 · 11133 阅读 · 0 评论 -
不用任何变量,实现strlen函数
使用递归:int strlen(char * str){ if(*str) return strlen(str+1)+1; else return 0;}原创 2011-10-18 10:11:56 · 982 阅读 · 0 评论 -
补丁的制作和使用:diff和patch
原理现在有一个文件file1,通过修改file1得到了文件file2,然后用diff工具比较file1和file2的差异,得到一个补丁文件file.patch,它记录了两个文件的不同之处,patch工具就可以根据这个补丁文件修改file1,从而得到file2。 相关工具diffd原创 2011-07-15 20:14:06 · 3690 阅读 · 0 评论 -
break与continue的区别
break语句用于结束最近的循环或它所在的switch语句;continue语句会结束本次循环,返回循环的开始处,继续下一次循环。例如:#include int main(){ int i=0; for(i=0;i<5;i++) {原创 2011-07-11 23:59:57 · 837 阅读 · 0 评论 -
关于C语言的位移操作
下面这段代码会输出什么结果?#include int main(){printf("%d\n",( (i-sizeof(int)) >>32));return 0;}答案是 0将代码修改如下:#include int main(){printf("%d\n",原创 2011-07-08 20:04:25 · 1310 阅读 · 0 评论 -
关于函数的指针参数
先做一道题目:#include int f(int *p){static int i = 5;p=&i;return 0;}int main(void){int *p;f(p);printf("p = %d/n",*p);return 0;}该程序的输出结果是多少? 该程序的输出结果是多少?===============原创 2011-07-01 09:43:00 · 964 阅读 · 6 评论 -
神级排序算法:sleep sort
下面是一个排序算法,用shell实现的:#!/bin/bash #sleepsort.shfunction f() { sleep "$1" echo "$1"} while [ -n "$1" ] do f "$1" & shiftdonewait 用法: ./sleepsort.s原创 2011-06-28 01:09:00 · 1694 阅读 · 0 评论 -
由“输出从1到1000的数”想到的
在酷壳看到一个编程题目——请把从1到1000的数打印出来,不能使用任何的循环语句或条件判断语句,更不能写1000个printf和cout,用C/C++语言。最容易想到的是用递归,文中给出了一个例子:#include void f(int n){ printf("%d/n",n); n/(1000-n); f(n+1); } void main(){ f(1);}该程序的本意是在n==1000时,n/(1000-n)的分母为0原创 2011-04-22 23:18:00 · 2138 阅读 · 0 评论 -
C语言编程规范
<br />/*<br />*Copyright<br />*<br />*File name:<br />*Abstract:<br />*<br />*Version:<br />*Author:<br />*Date:<br />*<br />*/<br /> <br /> <br /> <br /> <br />//Header files<br /> <br /> <br /> <br />//Macro<br /> <br /> <br /> <br />//Global variables o原创 2011-06-01 22:31:00 · 835 阅读 · 0 评论 -
用getopt处理main函数的参数
环境:Fedora12Gcc4.4.2在C语言中,main函数的声明如下:int main(int argc,char *argv[]);argc是指程序参数的个数,包括程序名本身,如果程序不带参数,argc为1;argv的每个数组元素存放一个程序参数,程序名存放在argv[0];例如:$ ls -l此时,argc为2,argv[0]是ls,argv[1]是-l。程序的参数可以分为三种:选项,选项的关联值,非选项参数。例如:$gcc hello.c -o hello hello.c是非选项参数,-o是选项原创 2011-05-28 21:48:00 · 4433 阅读 · 2 评论 -
牛逼的AA:ASCII-Art
也许你还不知道AA是什么,但只看那牛逼哄哄的名字,就该知道它绝非善类。没错。进入这个项目的主页:http://aa-project.sourceforge.net/ ,就能看到它的三个宏伟目标:1.将所有的重要软件移植到AA-lib2.将AA-lib移植到所有的可用平台3.迫使IBM重新制造MDA卡注:MDA(Monochrome Display Adapter ),单色字符显原创 2012-03-05 18:05:27 · 16092 阅读 · 4 评论