Linux系统基础开发技术1:构建Linux 库文件
Author:gnuhpc WebSite:blog.csdn.net/gnuhpc实验环境:Ubuntu Linux 10.04 32bit1.库文件简介库文件是一个包含了编译后代码、数据的文件,用于与程序其他代码连编,它可以使得程序模块化、编译速度更快,并且易于更新。库文件分为三种(实质为两种,在随后两句话有解释):静态库(在程序之前就已经装载进其中了)、共享库(在程序启动之时加载进去,在程序直接共享)、动态加载库(dynamically loaded,DL)(在程序运行中任何时候都可以被加载进程序中使用,事实上DL并非是一个完全不同的库类型,共享库可以用作DL而被动态加载(静态库
C语言 itoa函数及atoi函数
toa函数及atoi函数 2007-05-11 13:52 C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number 'num' is %d and the string 'str' is %s. n" , num, str); } itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。
将整数转换成字符串
将整数转换成字符串请编写一个 C 函数,该函数将给定的一个整数转换成字符串。【本程序在Dev C++ 4.9.9.2 下编译通过】下面的这个算法比较傻,垃圾的很,显示了一个C语言新手所应有的水平。而且处理不完全,算法考虑不周到,代码过于啰嗦,不够简洁,紧接着这个后面会有一个较为简洁、完全的代码。char * IntToStr(int Number){ char ch,*str,*t; int i,Temp,Len=0; str = (char *)malloc(11*sizeof(char)); t = str; Temp =Number; while(Temp != 0) { *t = (Temp%10)+0x30; Temp = Temp/10; Len++;
字符串操作函数
http://learn.akae.cn/media/ch25s01.html1. 字符串操作函数 请点评程序按功能划分可分为数值运算、符号处理和I/O操作三类,符号处理程序占相当大的比例,符号处理程序无处不在,编译器、浏览器、Office套件等程序的主要功能都是符号处理。无论多复杂的符号处理都是由各种基本的字符串操作组成的,本节介绍如何用C语言的库函数做字符串初始化、取长度、拷贝、连接、比较、搜索等基本操作。1.1. 初始化字符串 请点评#include <string.h> void *memset(void *s, int c, size_t n); 返回值:s指向哪,返回的指针就指向哪memset函数
DOS/Windows和Linux/Unix间文件格式转换
如何在Linux/Unix中转换windows文本文件的回车符由于windows文本文件的回车符通常是2个字符构成的,回车和换行,对应ASCII是0D,0A。如何将之转换成Linux/Unix文件系统中的换行符呢?下面介绍2个简单的方法(一般0D 0A构成的换行在Linux/Unix中会显示显示^M,我们只需要将之去掉就可以了) 1. 用sed命令替换sed -e 's/^M//g' original.txt > target.txt (注意^M 在Linux/Unix下是这样输入的:先按CTRL+v,接着按CTRL+SHIFT+m,呵呵~~ 其实俺主要就是为了记录一下这个输入方法) 2. 在vi中替换:%s/^M//gDOS/ 和Linux/Unix的文件换行回车
Analyzing Strings with sscanf
Analyzing Strings with sscanfThe counterpart or "opposite" of sprintf is sscanf. It looks at a string, and extracts values from it according to another string with format specifiers. It then places the values it has extracted in its arguments. The arguments must be variables, or other things that you can assign values to. For example, after the following code segment, the variable f will contain -3.6, and the variable i will contain 17:float f; int i; string the_string = "foo -3
sscanf()详解
sscanf()的一些使用说明 http://www.cppblog.com/tdweng/archive/2010/06/09/113495.html这里有些sscanf()的一些使用说明,都是从论坛,Blog里整理出来的。供大家使用。 通过学习和使用个人认为,在字符串格式不是很复杂,但是也并不简单的时候用这个函数比较合适,这个尺度就要靠自己把握了,字符串不是很复杂,但自己写个处理的函数比较麻烦,效率也不高,就用这个函数,如果字符串很复杂,那就用正则表达式吧。不多说了,看看下面这些介绍和列子吧!名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:Int sscanf( s
sscanf百科
http://blog.chinaunix.net/u3/116013/showart_2287271.htmlsscanf() - 从一个字符串中读进与指定格式相符的数据. 头文件:stdio.h 原型:Int sscanf( const char *, const char *, ...);int scanf( const char *, ...); 说明:sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。第一个参数可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | 't' | 'n' | 非%符号} 注:1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数
sscanf()和正则表达式的结合
sscanf()和正则表达式的结合http://hi.baidu.com/jangill/blog/item/e6dbca94663ce712d31b708b.htmlsscanf,表示从字符串中格式化输入 上面表示从str中,输入数字给x,就是32700 久以前,我以为c没有自己的split string函数,后来我发现了sscanf;一直以来,我以为sscanf只能以空格来界定字符串,现在我发现我错了。 sscanf是一个运行时函数,原形很简单: int sscanf( const char *buffer, const char *format [, argument ] ... ); 它强大的功能体现在对format的支持上。 我以前用它来分隔类似这样的字符串2006:03:18: int a, b, c; ss
正则表达式和sscanf
出处:http://blog.csdn.net/phil2036/archive/2009/05/27/4221704.aspx感谢原文作者分享。 在看这篇文章之前建议你先了解一下什么是正则表达式,具体不重复了,google一下能出一大堆,不过这篇文章比较好,贴个url http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm,作者说30分钟能看完的不是地球人,但是我15分钟就看完了还记住了90%以上,好吧我来自火星,玩笑到此结束,下面切入正题。 本文的命题源自于这样的一个url,protocol://ip:port/chn/mode,比如说,dv://192.168.1.253:65001/1/1。如果我要解析出来
H sscanf,scanf,fscanf与正则表达式
表头文件 #include(stdio.h )定义函数 int sscanf (const char *str,const char * format,........);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。# include < stdio. h>int main( ){ const char * s = "iios/12DDWDFF@122" ; char buf[ 20] ; sscanf ( s, "%*[^/]/%[^@]" , buf ) ; printf ( "%sn" , buf ) ;
信号量函数 semget() semop() semctl()
semget() 可以使用系统调用semget()创建一个新的信号量集,或者存取一个已经存在的信号量集: 系统调用:semget();原型:intsemget(key_t key,int nsems,int semflg);返回值:如果成功,则返回信号量集的IPC标识符。如果失败,则返回-1:errno=EACCESS(没有权限)EEXIST(信号量集已经存在,无法创建)EIDRM(信号量集已经删除)ENOENT(信号量集不存在,同时没有使用IPC_CREAT)ENOMEM(没有足够的内存创建新的信号量集)ENOSPC(超出限制) 系统调用semget()的第一个参数是关键字值(一般是由系统调用ftok()返回的)。系统内核将此值和系统中
信号量和互斥锁
来自:linux那些事我是USB 网名为卖血上网的哥们说话了,那么到底什么是信号量?或者什么是互斥锁?先说互斥锁.它诞生于这样一个背景.这个世界上,有些东西只能属于某一个人,或者说在一个时间里只能属于一个人,这你承认吧,比如一个女孩的心.当你要追求一个女孩时,你首先会去了解其人是否名花有主,若是否,你才会去追求,若已然有主,那么你只能放弃,或者准确的说,你只能等待.当然你可以很激昂的说,如果等待可以换来奇迹的话,我宁愿等下去,哪怕一年,抑或一生!然而,她爱的是他,终究不是你,所以你伤悲,流泪,却打不开她心中那把锁.这里你应该就能感觉
Linux下信号灯的使用
作者:杨硕,华清远见嵌入式学院讲师。一、信号灯简介:Linux支持系统5的信号灯(semaphore),是一种进程间通信的方式,只不过它和管道、FIFO或者共享内存等不一样,信号灯主要用于同步或者互斥对共享资源的访问,它的发明来源于火车运行系统中的“信号灯”,利用信号灯可以实现 “PV操作”这种进程间同步机制。P操作是获得资源,将信号灯的值减1,如果结果不为负则执行完毕,进程获得资源,否则进程睡眠以等待资源别的进程释放资源;V操作则是释放资源,给信号灯的值加1,释放一个因执行P操作而等待的进程。二、信号灯的两种类型1、二值信
c函数编写规范
一、可重入函数 1)什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。 2)可重入函数: 不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数
c++学习渐进数目
《 Inside the C++ Object Model》我自己现在也在看这本书,对C++对象模型介绍的非常好,是深入了解C++的资料书籍。C++学习应该从两个方面来学习,首先学习C++语言层面,也就是C++语法,如果深入学习的话就会进入C++底层。。。第二个层面就是对象,设计很广泛:对象设计,对象复用,STL,COM, BOOST。。。 1. 《The C++ Programming Language》 (Special 3rd Edition) by Bjarne StroustrupC++之父著作的大头作,非常不错,很厚,对C++介绍的非常详细。 2. 《The Design and Evolution of C++》 by Bjarne Stroustrup如果你只打算购买一
学习C++:实践者的方法
前言 我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,还是在comp.lang.c++.moderated这样的国际C++论坛上,乃至于在douban上的小组内,有心者都会发现,对C++语言的细节的关注一直都没有停止过,
快速掌握一个语言最常用的50%
现在的开发工作要求我们能够快速掌握一门语言。一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习;其二是花很多时间完整地把整个语言学习一遍,做到胸有成竹,然后再开始做实际工作。然而这两种方法都有弊病。第二种方法的问题当然很明显,不仅浪费了时间,偏离了目标,而且学习效率不高。因为没有实际问题驱动的语言学习通常是不牢固不深入的。有的人学着学着成了语言专家,反而忘了自己原本是要解决问题来的。第一种路子也有问题,在对于这种语言的脾气秉性还没有了解的情况下大刀阔斧地拼凑代码
C++经典书籍解读
C++是一门广泛用于工业软件研发的大型语言。它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值。和C语言一样,C++已经在许多重要的领域大获成功。 然而,一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹,而在高阶程序设计领域,Java和C#正在不断蚕食着C+ +的地盘。也许C++与C合为一体永远都是一个梦想,也许Java和C#的狂潮终将迫使C++回归本位 — 回到它有着根本性优势的开发领域:低级系统程序设计、高级大规模高性能应用设计、嵌入式程序设计以及数值科学计算等。果真
嵌入式CGI开发之旅——3
对于CGI来说,处理表单是它的重头戏,今天我们来看看CGI如何处理HTML的表单。处理表单(GET)现在大多数的CGI脚本用来处理表单输入,处理表单的过程和上面直接在URL中调用CGI脚本的情况有些不同。一个表单通常分为两个部分:HTML表单格式和处理数据的脚本,处理程序由标签的ACTION属性指定,每个输入区都有一个NAME属性用来称呼表单元素,当表单数据被递交给ACTION中定义的处理程序时,NAME和其输入内容被以数字或字符的形式保存在环境变量中,脚本程序再通过读取环境变量的方式获得用户输入,根据编程语言的不同获取环境变量的方式也不同