课程编号: C语言常用库函数 版本: 讲师: 联系方式:.

Slides:



Advertisements
Similar presentations
◎ 標準函數 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 本來呼叫使用標準函數庫裡的函數,也就是使用模組裡的.
Advertisements

第九章 字串 (String).
補充: Input from a text file
高级语言程序设计 C++程序设计教程(下) 2006年春季学期 与一些教材的区别 偏重理论,不去讨论某个系统的具体使用方法,但会涉及实现技术
C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
複習 struct score_Type{ int chinese,english; }; struct my_Type{
第一章 程序设计入门.
C File System.
函數 授課:ANT 日期:2009/3/24.
计算概论 第二十一讲 文件操作 北京大学信息学院.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
程序设计II 第三讲 字符串处理.
C 程式設計— 指標.
函數 授課:ANT 日期:2011/3/28.
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
C 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
第7章 Linux环境编程.
第10章 文件操作.
第十一章 文件 文件概述 文件操作 文件操作实例 本章小结 作业: 练习:
C++ 程式設計— 語言簡介 台大資訊工程學系 資訊系統訓練班.
STRUCTURE 授課:ANT 日期:2010/5/12.
C常用函数 输入输出 stdio.h 字符串处理 string.h 工具函数 stdlib.h 数学函数 math.h
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
第10章 文件操作.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
Function.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
C语言程序设计 李祥.
程序设计专题一 结构化程序设计与递归函数 主讲教师: 刘新国.
11.1 文件的基本概念 11.2 文件的打开与关闭 11.3 文件的顺序读写 11.4 文件的随机读写 11.5 文件检测
第二章 基本元素、类型和概念 七、输出函数printf 八、输入格式转换函数scanf.
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
C语言 程序设计基础与试验 刘新国、2012年秋.
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
程式設計 博碩文化出版發行.
第九章 文件 程序数据标准输入输出设备 程序数据文件 数据流和文件 文件的打开和关闭 文件读写函数.
File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案.
THE C PROGRAMMING LANGUAGE
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华.
Linux 文件操作——系统调用和标准 IO 库
第5章 文件.
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
研讨课4 文件操作.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
自我參考結構 (self-reference – 1)
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
C语言概述 第一章.
Introduction to the C Programming Language
函式庫補充資料.
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C標準輸出入函數庫 與 作業系統.
C程序设计.
本节内容 文件读写 视频提供:昆山爱达人信息技术有限公司.
第二章 类型、对象、运算符和表达式.
Introduction to the C Programming Language
C程序设计.
第13章 文 件.
Introduction to the C Programming Language
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
結構、檔案處理(Structure, File)
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
字串 第10章 part I 8/30/2019.
函式庫補充資料 1.
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

课程编号: C语言常用库函数 版本: 讲师: 联系方式:

目的与目标 学习使用C语言常用库函数

课程概述 math.h stdio.h stdlib.h malloc.h string.h assert.h

动态存储分配(malloc.h) 函数名: malloc 功 能: 内存分配函数 用 法: void *malloc(unsigned size); 程序例: #include <stdlib.h> /* For _MAX_PATH definition */ #include <stdio.h> #include <malloc.h> void main( void ) { char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH ); if( string == NULL ) printf( "Insufficient memory available\n" ); else{ printf( "Memory space allocated for path name\n" ); free( string ); printf( "Memory freed\n" ); }

动态存储分配(malloc.h) 函数名: free 功 能: 释放已分配的块 用 法: void free(void *ptr); 程序例: #include <string.h> #include <stdio.h> #include <malloc.h> int main(void) { char *str; /* allocate memory for string */ str = malloc(10); /* copy "Hello" to string */ strcpy(str, "Hello"); /* display string */ printf("String is %s\n", str); /* free memory */ free(str); return 0; }

动态存储分配(malloc.h) { long *buffer; size_t size; 函数名: realloc 功 能:改变已分配内存的大小,ptr为已分配有内存区域的指针,newsize为新的长度,返回分配好的内存指针; 用 法: void *realloc(void *ptr,unsigned newsize) 程序例: #include <stdio.h> #include <malloc.h> #include <stdlib.h> void main( void ) { long *buffer; size_t size; if( (buffer = (long *)malloc( 1000 * sizeof( long ) )) == NULL ) exit( 1 ); size = _msize( buffer ); printf( "Size of block after malloc of 1000 longs: %u\n", size ); /* Reallocate and show new size: */ if( (buffer = realloc( buffer, size + (1000 * sizeof( long )) )) == NULL ) printf( "Size of block after realloc of 1000 more longs: %u\n", size ); free( buffer ); exit( 0 ); }

动态存储分配(malloc.h) 函数名:calloc 功 能:分配nelem个长度为elsize的内存空间并返回所分配内存的指针 ; 用 法: void *calloc( size_t num, size_t size ); 程序例: #include <stdio.h> #include <malloc.h> void main( void ) { long *buffer; buffer = (long *)calloc( 40, sizeof( long ) ); if( buffer != NULL ) printf( "Allocated 40 long integers\n" ); else printf( "Can't allocate memory\n" ); free( buffer ); }

类型转换函数(stdlib.h) 函数名: atof 功 能: 把字符串转换成双精度数,并返回这个数,错误返回0; 用 法: double atof(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { float f; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f); return 0; }

类型转换函数(stdlib.h) 函数名: atoi 功 能: 把字符串转换成整型数,并返回这个数,错误返回0; 用 法: int atoi(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { int n; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); return 0; }

类型转换函数(stdlib.h) 函数名: atol 功 能: 把字符串转换成长整型数,并返回这个数,错误返回0; 用 法: long atol(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); }

随机数函数(stdlib.h) 函数名: srand 功 能: 初始化随机数发生器 用 法: void srand(unsigned seed); 程序例: #include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int i; time_t t; srand((unsigned) time(&t)); printf("Ten random numbers from 0 to 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; }

随机数函数(stdlib.h) 函数名: rand 功 能: 随机数发生器 用 法: void rand(void);

输入输出函数(stdio.h) 函数名: fopen 功 能:打开用filename指定的文件,并使其与一个流相联。 用 法: FILE *fopen(const char *filename,const char *mode) 使用方式:文件指针名=fopen("文件名","处理方式")     "处理方式"取:     "rt"  打开一个文本文件,只能读。     "wt"  生成一个文本文件,只能写。若文件存在则被重写。     "at"  打开一个文本文件,只能在文件尾部添加。     "rb"  打开一个二进制文件,只能读。     "wb"  生成一个二进制文件,只能写。     "ab"  打开一个二进制文件,只能在文件尾部添加。     "rt+"  打开一个文本文件,可读可写。     "wt+"  生成一个文本文件,可读可写。     "at+"  打开一个文本文件,可读可添加。     "rb+"  打开一个二进制文件,可读可写。     "wb+"  生成一个二进制文件,可读可写。     "ab+"  打开一个二进制文件,可读可添加。 返回值:指明流的指针(成功时)或NULL(失败时) 注:需先定义 FILE *文件指针名;   "文件名"若用 argv[1]代替,则可使用命令行形式指定文件名

输入输出函数(stdio.h) 函数名: fclose 功 能: 关闭一个流 用 法: int fclose(FILE *stream); 程序例: #include <string.h> #include <stdio.h> int main(void) { FILE *fp; char buf[11] = "0123456789"; /* create a file containing 10 bytes */ fp = fopen("DUMMY.FIL", "w"); fwrite(&buf, strlen(buf), 1, fp); /* close the file */ fclose(fp); return 0; }

输入输出函数(stdio.h) 函数名: fread 功 能: 从一个流中读数据 用 法: int fread(void *ptr, int size, int nitems, FILE *stream); 程序例: #include <string.h> #include <stdio.h> int main(void) { FILE *stream; char msg[] = "this is a test"; char buf[20]; if ((stream = fopen("DUMMY.FIL", "w+"))== NULL) { fprintf(stderr,"Cannot open output file.\n"); return 1; } /* write some data to the file */ fwrite(msg, strlen(msg)+1, 1, stream); /* seek to the beginning of the file */ fseek(stream, SEEK_SET, 0); /* read the data and display it */ fread(buf, strlen(msg)+1, 1, stream); printf("%s\n", buf); fclose(stream); return 0; }

输入输出函数(stdio.h) 函数名: fseek 功 能: 重定位流上的文件指针 用 法: int fseek(FILE *stream,long offset,int fromwhere); 程序例: #include <stdio.h> long filesize(FILE *stream); int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "w+"); fprintf(stream, "This is a test"); printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream)); fclose(stream); return 0; }

输入输出函数(stdio.h) 函数名: fwrite 功 能: 写内容到流中 用 法: int fwrite(void *ptr, int size, int nitems, FILE *stream);

输入输出函数(stdio.h) 函数名: sprintf 功 能: 送格式化输出到字符串中 用 法: int sprintf(char *string, char *farmat [,argument,...]); 程序例: #include <stdio.h> #include <math.h> int main(void) { char buffer[80]; sprintf(buffer, "An approximation of Pi is %f\n", M_PI); puts(buffer); return 0; }

存储数组操作函数(memory.h) 函数名: memcpy 功 能: 从源source中拷贝n个字节到目标destin中 用 法: void *memcpy(void *destin, void *source, unsigned n); 程序例: #include <stdio.h> #include <string.h> #include <memory.h> int main(void) { char src[] = "******************************"; char dest[] = "abcdefghijlkmnopqrstuvwxyz0123456709"; char *ptr; printf("destination before memcpy: %s\n", dest); ptr = memcpy(dest, src, strlen(src)); if (ptr) printf("destination after memcpy: %s\n", dest); else printf("memcpy failed\n"); return 0; }

存储数组操作函数(memory.h) 函数名: memset 功 能: 设置s中的所有字节为ch, s数组的大小由n给定 用 法: void *memset(void *s, char ch, unsigned n); 程序例: #include <string.h> #include <stdio.h> #include <memory.h> int main(void) { char buffer[] = "Hello world\n"; printf("Buffer before memset: %s\n", buffer); memset(buffer, '*', strlen(buffer) - 1); printf("Buffer after memset: %s\n", buffer); return 0; }

存储数组操作函数(memory.h) 函数名: memcmp 功 能:比较正好是n字节长的两个字符串s1和s2; 用 法: int memcmp( const void *buf1, const void *buf2, size_t count ); 程序例: #include <string.h> #include <stdio.h> void main( void ) { char first[] = "12345678901234567890"; char second[] = "12345678901234567891"; int result; result = memcmp( first, second, 19 ); if( result < 0 ) printf( "First is less than second.\n" ); else if( result == 0 ) printf( "First is equal to second.\n" ); else if( result > 0 ) printf( "First is greater than second.\n" ); result = memcmp( first, second, 20 ); }

字符串函数(string.h) 函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *strcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n", string); return 0; }

字符串函数(string.h) 函数名: strcat 功 能: 字符串拼接函数 用 法: char *strcat(char *destin, char *source); 程序例: #include <string.h> #include <stdio.h> int main(void) { char destination[25]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination); return 0; }

字符串函数(string.h) 函数名: strcmp 功 能: 串比较 用 法: int strcmp(char *str1, char *str2); 程序例: #include <string.h> #include <stdio.h> int main(void) { char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc"; int ptr; ptr = strcmp(buf2, buf1); if (ptr > 0) printf("buffer 2 is greater than buffer 1\n"); else printf("buffer 2 is less than buffer 1\n"); ptr = strcmp(buf2, buf3); if (ptr > 0) printf("buffer 2 is greater than buffer 3\n"); else printf("buffer 2 is less than buffer 3\n"); return 0; }

字符串函数(string.h) 函数名: strcpy 功 能: 串拷贝 用 法: char *strcpy(char *str1, char *str2); 程序例: #include <stdio.h> #include <string.h> int main(void) { char string[10]; char *str1 = "abcdefghi"; strcpy(string, str1); printf("%s\n", string); return 0; }

数学函数(math.h) 函数名:abs 功能:求整数的绝对值 用法:int abs(int i) 程序例: #include <stdio.h> #include <math.h> int main(void) { int number = -1234; printf("number: %d absolute value: %d\n",number, abs(number)); return 0; }

数学函数(math.h) 函数名: acos 功 能: 反余弦函数 用 法: double acos(double x); 程序例: #include <stdio.h> #include <math.h> int main(void) { double result; double x = 0.5; result = acos(x); printf("The arc cosine of %lf is %lf\n", x, result); return 0; }

数学函数(math.h) 函数名: asin 功 能: 反正弦函数 用 法: double asin(double x); 程序例: #include <stdio.h> #include <math.h> int main(void) { double result; double x = 0.5; result = asin(x); printf("The arc sin of %lf is %lf\n", x, result); return(0); }

数学函数(math.h) 函数名: atan 功 能: 反正切函数 用 法: double atan(double x); 程序例: #include <stdio.h> #include <math.h> int main(void) { double result; double x = 0.5; result = atan(x); printf("The arc tangent of %lf is %lf\n",x,result); return(0); }

数学函数(math.h) 函数名: atan2 功 能: 计算Y/X的反正切值 用 法: double atan2(double y, double x); 程序例: #include <stdio.h> #include <math.h> int main(void) { double result; double x = 90.0, y = 45.0; result = atan2(y,x); printf("The arc tangent ratio of %lf is %lf\n",(y/ x),result); return 0; }

数学函数(math.h) 函数名: fmod 功 能: 计算x对y的模, 即x/y的余数 用 法: double fmod(double x, double y); 程序例: #include <stdio.h> #include <math.h> int main(void) { double x = 5.0, y = 2.0; double result; result = fmod(x,y); printf("The remainder of (%lf / %lf) is %lf\n", x, y, result); return 0; }

数学函数(math.h) 函数名: sqrt 功 能: 计算平方根 用 法: double sqrt(double x); 程序例: #include <math.h> #include <stdio.h> int main(void) { double x = 4.0, result; result = sqrt(x); printf("The square root of %lf is %lf\n",x,result); return 0; }

诊断函数(assert.h) 函数名: assert 功 能: 测试一个条件并可能使程序终止 用 法: void assert(int test); 程序例: #include <assert.h> #include <stdio.h> #include <stdlib.h> struct ITEM { int key; int value; }; void additem(struct ITEM *itemptr) { assert(itemptr != NULL); } int main(void) { additem(NULL); return 0; }

总结

问题讨论

参考资料