Linux常用C函数


Linux操作系统精讲 大连理工大学软件学院 邱铁 综合楼413,Tel:0411-87571632 E_mail: qiutie@dlut.edu.cn 参考教材: ‡ 《Linux应用与开发典型实例精讲》 邱铁、于玉龙、徐子川编著.清华大学出版社. 2010.5 第7章 Linux常用C函数 学习本章要达到的目标: †1.熟练应用Linux中C语言函数库中的字符操作函数; †2.熟练应用掌握Linux中C语言函数库中的字符串操作函 数; †3.熟悉Linux中C语言函数库中的数学计算操作函数的应 用; †4.熟悉Linux中C语言函数库中的数据结构和算法的函数 的应用; †5.了解Linux中C语言函数库中的日期时间函数的使用; †6.掌据Linux常用C函数混合编程的方法。 7.1 使用函数库 † 人们把大量的基础性操作编写成一个个独 立的函数,这些函数具有低耦合、高内聚 的特点,这些函数集合成一个已经编译好 的不完整的二进制代码文件,就是函数库 † 需要解决的问题 „ 如何在源代码中调用这些函数库 „ 如何在编译的时候让编译器正确的将函数库 库中的内容加载到我们的应用程序中 † 根据函数库中函数逻辑加载的时间不同,可 分为静态库、载入连接库、动态连接库。 „ 静态库是在连接的时候被加入到应用程序的可 执行文件中的 „ 载入连接库在编译时并不将库的内容添加到应 用程序的可执行文件中 „ 动态链接库是在程序运行过程根据需要动态加 载到程序中的 7.2 字符操作 † 测试参数所对应的字符是否为拉丁字母 „ #include „ int isalpha(int c); † 测试参数所对应的字符是否为大写字母( isupper)或小写字母(islower) „ #include „ int isupper(int c); „ int islower(int c); † 测试参数所对应的字符是否为阿拉伯数字( isdigit)或十六进制数字(isxdigit) „ #include „ int isdigit(int c); „ int isxdigit(int c); † 测试参数所对应的字符是否为拉丁字母或阿 拉伯数字 „ #include „ int isalnum(int c); † 测试参数所对应的字符是否为空白字符 „ #include „ int isspace(int c); † 测试参数所对应的字符是否为标点符号或特 殊符号 „ #include „ int ispunct(int c); † 测试参数所对应的字符是否为可打印字符。 „ #include „ int isgraph(int c); „ int isprint(int c); † 测试参数所对应的字符是否为ASCII码字 符 „ #include „ int isascii(int c); † 将参数转化为ASCII码字符 „ #include „ int toascii(int c); † 将参数转化为小写字母或大写字母 „ #include „ int tolower(int c); „ int toupper(int c); 7.3 字符串操作 † 字符串是编程中一种重要的数据类型,因为 用户通过键盘的输入都是采用字符串的形式 的 7.3.1 数据类型转换 † 将字符串转化成整型 „ #include „ int atoi(const char *nptr); † 将字符串转化成长整型 „ #include „ long atol(const char *nptr); † 将字符串转化成双精度浮点型 „ #include „ double atof(const char *nptr); † 将所提供的数字转化成字符串 „ #include „ char *gcvt(double number, size_t ndigits, char *buf); † 将字符串转化成长整型 „ #include „ long strtol(const char *nptr, char **endptr, int base); † † 将字符串转化成无符号长整型 „ #include „ unsigned long strtoul(const char *nptr, char **endptr, int base); † 将字符串转化成双精度浮点型 „ #include „ dobule strtod(const char *nptr, char **endptr, int base); 7.3.2 字符串数据处理 † 找到字符串第一次出现某一字符(或字符代 码)的位置 „ #include „ char *index(const char *s, int c); „ char *strchr(const char *s, int c); † 找到字符串最后一次出现某一字符(或字符 代码)的位置 „ #include „ char *rindex(const char *s, int c); „ char *strrchr(const char *s, int c); † 计算字符串的长度 „ #include „ int strlen(const char *s); † 字符串拷贝 „ #include „ char *strcpy(char *dest, const char *src); „ char *strncpy(char *dest, const char *src, size_t n); † 拷贝字符串,目标字符串地址在堆空间申请 „ #include „ char *index(const char *src); † 将两个字符串连接成一个字符串 „ #include „ char *strcat(char *dest, const char *src); „ char *strncat(char *dest, const char *src, size_t n); † 不区分大小写按照ASCII码的顺序,比较 两个字符串 „ #include „ int strcasecmp(const char *s1, const char *s2); „ int strncasecmp(const char *s1, const char *s2, size_t n); † 查找字符串 „ #include „ int strstr(const char *haystack, const char *needle); † 分割字符串 „ #include „ char *strtok(const char *s, const char *delim); 7.4 数学计算操作 † 取绝对值 „ #include „ int abs(int j); „ #include „ double fabs(double x); † 取整操作 „ #include „ double ceil(double x); „ double floor(double x); † 计算乘方 „ #include „ double pow(double x, double y); † 计算开方 „ #include „ double sqrt(double x); † 计算e的x次幂 „ #include „ double exp(double x); † 计算以e(log)或10(log10)为底x的 对数 „ #include „ double log(double x); „ double log10(double x); † 计算三角函数正弦(sin)、余弦(cos) 或正切(tan) „ #include „ double sin(double x); „ double cos(double x); „ double tan(double x); † 计算反三角函数反正弦(asin)、反余弦 (acos)或反正切(atan) „ #include „ double asin(double x); „ double acos(double x); „ double atan(double x); 7.5 数据结构与算法操作 † 按均匀分布,取出一个随机整数 „ #include „ int rand(); † 设置随机数种子 „ #include „ void srand(unsigned int seed); † 快速排序 „ #include „ void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); † 线性搜索 „ #include „ void *lfind(const void *key, const void *void base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); „ void *lsearch(const void *key, const void *void base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); † 采用二元搜索的方式,搜索已经排序的数组 „ #include „ void *bsearch(const void *key, const void *void base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 7.6 日期时间操作 † 获取系统当前时间 „ #include „ time_t time(time_t *t); † 将Linux纪元时间转化为现实世界的时间 „ #include „ struct tm *localtime(const time_t *timep); „ struct tm *gmtime(const time_t *timep); † 将现实世界时间转化为Linux纪元时间 „ #include „ time_t *mktime(struct tm *timeptr); † 将tm结构体转化成字符串形式 „ #include „ char *ctime(struct tm *timeptr); „ char *asctime(struct tm *timeptr); 7.7 实例训练 † 需要完成如下功能: „ 接收用户输入的字符串 „ 摘除字符串中不能组成数字的字符,例如 “1a2b.3cEee2”摘除后的结果应该为 “12.3E2”。 „ 判断新的字符串所表示的数,是一个整数还是 浮点数。 „ 输出新的字符串所表示的数的值。 „ 分别对取出的整数和浮点数分别进行加和,在 程序退出的时候输出两个加和的值。 7.7.1 任务分析 7.7.2 编写程序 † 用vi编写程序代码,完成程序设计的状态机 7.7.3 编译、运行 † gcc -o exp7 exp7.c 思考与练习 † 1.思考:从软件工程的角度分析,为什 么需要建立函数库? † 2.编写一个程序,模拟扑克牌洗牌。并 将洗牌后,扑克牌的顺序输出到屏幕上, 花色可以用字母代替。 † 3.选作题:编写一个计算器,用户从键 盘输入算式,程序将结果返回。计算器支 持加、减、乘、除、乘方、括号。例如, 用户输入“(1+2)*3-6/2”,程序输出 “6”。
还剩31页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

ceasar09

贡献于2012-01-31

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf