c语言常用库函数
C语言常用函数
C语言的常用库函数函数1。
absread()读磁盘绝对扇区函数原形:int absread(int drive,int num,int sectnum,void *buf)功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num 个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。
参数:drive=0对应A盘,drive=1对应B盘。
返回值:0:成功;-1:失败。
头文件:dos.h函数2。
abswrite()写磁盘绝对扇区函数原形:int abswrite(int drive,int nsects,int lsect,void *buffer)drive=0(A驱动器)、1(B驱动器)、nsects=要写的扇区数(最多64K个);lsect=起始逻辑扇区号;buffer=要写入数据的内存起始地址。
功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。
返回值:0:成功;-1:失败。
头文件:dos.h函数3。
atof()将字符串转换成浮点数的函数原形:double atof(const char *s)功能:把s所指向的字符串转换成double类型。
s格式为:符号数字.数字E符号数字返回值:字符串的转换值。
头文件:math.h、stdlib.h函数4。
atoi()将字符串转换成整型数的函数原形:int atoi(const char *s)功能:把s所指向的字符串转换成int类型。
s格式为:符号数字返回值:字符串的转换值。
若出错则返回0。
头文件:stdlib.h函数5。
atol()将字符串转换成长整型数的函数原形:long atol(const char *s)功能:把s所指向的字符串转换成long int类型。
s格式为:符号数字返回值:字符串的转换值。
C语言常用库函数
C库函数1.数学函数头文件为 #include<> 或者 #include""函数名函数原型功能求整数 x 的绝对abs int abs(int x)值double acos(double计算cos-1(x)的acosx)值double asin(double计算sin-1(x)的asinx)值double atan(double计算tan-1(x)的atanx)值double计算 tan -1 (x/y) Atan2atan2(double的值x,double y)double cos(doublecos计算cos(x)的值x)coshdouble cosh(double 计算 x 的双曲余返回值说明计算结果X应在-1 到 1 计算结果范围内X应在-1 到 1 计算结果范围内计算结果计算结果X 的单位为弧计算结果度计算结果x)弦函数 cosh(x)的值double exp(doubleexp求 e x的值计算结果x)double fabs(doublefabs求 x 的绝对值计算结果x)该整数的double 求出不大于x 的floor 双精度实floor(double x) 最大整数数返回余数double fmod(double 求整除x/y 的余fmod 的双精度x,double y) 数实数把双精度数 val分解为数字部分double( 尾数 )x 和以 2 返回数字frexp frexp(double为底的指数 n,即部分 xval, int *eptr)val=x*2 n≤ x< 1 n 存放在 eptr 指向的变量中logdouble log(double求 log e x, 即ln x 计算结果x)doublelog10求log10x计算结果log10(double x)把双精度数 val分解为整数部分Double modf(double Val 的小modf 和小数部分,把val, double *iptr) 数部分整数部分存到iptrdouble pow(doublepow计算 x y的值计算结果x,double y)产生随机 -90 到rand Int rand(void)32767 间的随机随机整数整数Double sin(doublesin计算 sin x的值计算结果X 单位为弧度x)计算 x 的双曲正double sinh(doublesinh弦函数sinh(x)计算结果x)的值Double sqrt(doublesqrt计算x计算结果X 应≥ 0x)Double tan(doubletan计算 tan(x) 的值计算结果X 单位为弧度x)计算 x 的双曲正Double tanh(doubletanh切函数tanh(x)计算结果x)的值2.字符函数和字符串函数函数名函数原型功能返回值包含文件isalnu Int isalnum检查 ch 是否是字母(alpha) 或数字是字母或数字返回 1;否则返m (int ch);(numeric) 回0isalph Int isalpha(int 是,返回1;不检查ch 是否字母a ch); 是,则返回0检查 ch 是否控制字符iscntr Int iscntrl 是,返回1;不(其ASCII 码在0 和l (int ch); 是,则返回00x1F 之间)isdigit Int isdigit(int ch);检查ch 是否为数字( 0~9)是,返回 1;不是,则返回 0isgrap Int isgraph 检查 ch 是否可打印字是,返回 1;不h (int ch);符(其 ASCII 码在是,则返回 0 0x21 和 0x7E 之间),不包括空格islower Int islower(int ch);检查 ch 是否小写字母( a~z)是,返回 1;不是,则返回 0检查 ch 是否可打印字isprint Intisprint (intch);符,(包括空格),其ASCII 码在 0x20 和是,返回 1;不是,则返回 00x7E 之间,检查 ch 是否标点字符ispunct Int ispunct(int ch);(不包括空格),即除字母、数字和空格以是,返回 1;不是,则返回 0外的所有可打印字符检查ch 是否空格符、isspac Int isspace 是,返回1;不跳格符(制表符)或e (int ch); 是,则返回0换行符isupper Int isupper(int ch);检查 ch 是否大写字母( A~Z)是,返回 1;不是,则返回 0检查 ch 是否一个十六isxdig Intisxdigit 是,返回1;不进制数字字符(即it (int ch); 是,则返回00~9,或 A~F,或a~f )strcatchar 把字符串 str2 接到Str1*strcat(char str1 后面,str1 最后*str1,char面的’ \0 ’被取消*str2);返回指向该位char 找出 str 指向的字符strchr*strchr(char置的指针,如找串中第一次出现字符不到,则返回空*str,int ch); ch 的位置指针Str1 < str2 ,返char*strcmp(char比较两个字符串strcmp*str1,char str1 、str2*str2);char*strcpy(char把 str2 指向的字符串strcpy*str1,char复制到 str1中去*str2);unsigned int统计字符串str中字strlen strlen (char符的个数(不包括终*str);止符’ \0 ’)回负数;Str1 = str2 ,返回 0;str1 >str2 ,返回正数。
c语言标准库函数
c语言标准库函数C语言标准库函数。
C语言标准库函数是C语言程序设计中不可或缺的重要组成部分。
它包含了大量的函数,可以帮助程序员完成各种任务,如输入输出、内存管理、字符串操作、数学运算等。
本文将对C语言标准库函数进行详细介绍,帮助读者更好地理解和运用这些函数。
首先,我们来看看C语言标准库函数的分类。
它们通常被分为几个大的类别,包括输入输出函数、字符串处理函数、数学函数、内存管理函数等。
每个类别下又包含了许多具体的函数,比如输入输出函数中就包括了printf、scanf、getchar、putchar等函数。
这些函数可以帮助程序员完成各种输入输出操作,是C语言程序设计中必不可少的工具。
接下来,我们将重点介绍几个常用的C语言标准库函数。
首先是printf函数,它是C语言中最常用的输出函数之一。
通过printf函数,我们可以将各种数据以指定格式输出到屏幕上,非常方便实用。
其次是scanf函数,它是C语言中常用的输入函数之一。
通过scanf函数,我们可以从键盘上接收用户输入的数据,为程序提供所需的信息。
除此之外,C语言标准库还提供了大量的字符串处理函数,如strlen、strcpy、strcat等,可以帮助程序员对字符串进行各种操作。
另外,C语言标准库中还包含了丰富的数学函数,如sin、cos、sqrt等,可以帮助程序员进行各种数学运算。
此外,内存管理函数如malloc、free等也是C语言标准库中非常重要的一部分,可以帮助程序员进行动态内存分配和释放。
需要注意的是,虽然C语言标准库函数非常强大,但在使用过程中也需要注意一些细节。
比如在使用输入函数时,需要注意输入的数据类型和格式是否匹配,否则会导致程序出错。
另外,在使用内存管理函数时,需要注意内存的分配和释放是否配对,避免出现内存泄露的问题。
总之,对于每一个C语言标准库函数,都需要了解其具体的用法和注意事项,才能更好地运用它们。
在实际编程中,C语言标准库函数可以帮助程序员提高工作效率,简化代码逻辑,实现各种复杂的功能。
C语言库函数使用大全
C语言库函数使用大全C语言是一种面向过程的编程语言,它提供了大量的库函数来方便开发者进行各种操作。
在本篇文章中,我将介绍一些常用的C语言库函数,并说明它们的使用方法。
1.字符串处理函数:- strlen:用于计算字符串的长度。
- strcat:用于将两个字符串连接起来。
- strcpy:用于将一个字符串复制到另一个字符串中。
- strcmp:用于比较两个字符串是否相等。
2.数学函数:- abs:返回一个整数的绝对值。
- sqrt:返回一个数的平方根。
- pow:计算一个数的指定次幂。
- rand:生成一个随机数。
3.输入输出函数:- printf:用于打印输出。
- scanf:用于接受用户的输入。
- getchar:用于从输入流中读取一个字符。
- putchar:用于将一个字符输出到屏幕上。
4.内存管理函数:- malloc:用于在堆中分配指定大小的内存块。
- free:用于释放之前分配的内存。
- calloc:可以在堆中分配指定数量和大小的内存,并将每个字节初始化为0。
- realloc:用于调整之前分配的内存块的大小。
5.时间日期函数:6.文件操作函数:- fopen:用于打开一个文件。
- fclose:用于关闭一个文件。
- fgets:从文件中读取一行字符串。
- fputs:向文件中写入一行字符串。
7.数组处理函数:- memset:将一个数组的所有元素设置为指定的值。
- memcpy:将一个数组的内容复制到另一个数组中。
- memmove:将一个数组的内容移动到另一个数组中,处理重叠情况。
- qsort:用于对数组进行快速排序。
这只是C语言库函数的一小部分,还有很多其他函数可供使用。
在实际开发中,根据需求选择适合的函数,可以提高代码的效率和可读性。
总结:C语言库函数提供了丰富的功能,可以帮助开发者简化编程过程。
在使用库函数时,需要仔细阅读函数的说明文档,并根据需求选择适合的函数和参数。
通过充分利用库函数,可以提高代码的开发效率和质量。
c语言常用函数大全及详解
C语言常用函数包括:1.printf函数:用于在控制台输出数据。
2.scanf函数:用于从控制台读取用户输入的数据。
3.strlen函数:用于计算字符串的长度。
4.strcmp函数:用于比较两个字符串的大小。
5.strcpy函数:用于将一个字符串复制到另一个字符串中。
6.strcat函数:用于将一个字符串连接到另一个字符串的末尾。
7.strchr函数:用于查找字符串中指定字符的位置。
8.strstr函数:用于查找字符串中指定子串的位置。
9.atoi函数:用于将字符串转换为整数。
10.atof函数:用于将字符串转换为浮点数。
11.malloc函数:用于动态分配内存空间。
12.free函数:用于释放动态分配的内存空间。
13.memcpy函数:用于将一段内存区域的数据复制到另一段内存区域。
14.memset函数:用于将一段内存区域的数据设置为指定的值。
15.abs函数:用于计算整数的绝对值。
16.rand函数:用于生成随机数。
17.srand函数:用于设置随机数生成器的种子。
18.time函数:用于获取当前的系统时间。
19.localtime函数:用于将时间戳转换为本地时间。
20.strtol函数:用于将字符串转换为长整型数。
21.strtod函数:用于将字符串转换为双精度浮点数。
22.fprintf函数:用于将数据格式化输出到文件中。
23.fscanf函数:用于从文件中读取格式化的数据。
24.fgets函数:用于从文件中读取一行数据。
25.fputs函数:用于将数据写入文件中。
26.fopen函数:用于打开文件。
27.fclose函数:用于关闭文件。
28.feof函数:用于判断文件是否已经到达文件末尾。
29.ferror函数:用于判断文件操作是否发生错误。
30.fprintf函数:用于将数据格式化输出到文件中。
C语言库函数使用大全
C语言库函数使用大全C语言是一种广泛应用的编程语言,它提供了许多常用的库函数来帮助开发人员简化编写代码的过程。
这些库函数涵盖了各种任务,包括字符串操作、数学计算、文件处理、内存管理等等。
在下面的文章中,我将为您介绍一些重要的C语言库函数。
字符串处理函数:- strlen(const char *str):返回字符串的长度,不包括空字符。
- strcpy(char *dest, const char *src):将源字符串复制到目标字符串。
- strcat(char *dest, const char *src):将源字符串追加到目标字符串的末尾。
- strcmp(const char *str1, const char *str2):比较两个字符串,并返回一个整数表示它们的关系。
- strncpy(char *dest, const char *src, size_t n):将源字符串的前n个字符复制到目标字符串。
数学函数:- sqrt(double x):计算并返回x的平方根。
- abs(int x):返回一个整数的绝对值。
- pow(double x, double y):计算并返回x的y次方。
- sin、cos、tan:分别计算并返回给定角度的正弦、余弦和正切值。
- rand(void):生成并返回一个随机数。
文件处理函数:- fopen(const char *path, const char *mode):打开一个文件,并返回一个指向该文件的指针。
- fclose(FILE *stream):关闭一个已打开的文件。
- fprintf(FILE *stream, const char *format, ...):将格式化的输出写入到一个文件中。
- fscanf(FILE *stream, const char *format, ...):从一个文件中读取格式化的输入。
内存管理函数:- malloc(size_t size):分配一块指定大小的内存空间,并返回指向该空间的指针。
c 标准库函数手册
c 标准库函数手册C 标准库函数手册。
C 标准库函数是 C 语言提供的一组函数库,它包含了一系列常用的函数,可以帮助程序员更高效地完成各种任务。
本手册将介绍 C 标准库函数的常用函数及其用法,帮助读者更加深入地理解和运用这些函数。
一、stdio.h。
stdio.h 是 C 语言中用来进行输入输出操作的头文件,它包含了一系列与标准输入输出相关的函数。
其中,最常用的函数包括 printf、scanf、fopen、fclose 等。
这些函数可以帮助程序员进行屏幕输出、键盘输入、文件读写等操作。
例如,printf 函数可以用来向屏幕输出格式化的字符串,而 scanf 函数则可以用来从键盘接收输入并存储到变量中。
二、stdlib.h。
stdlib.h 是 C 语言中的标准库头文件之一,它包含了一系列与内存分配、随机数生成、字符串转换等功能相关的函数。
其中,最常用的函数包括 malloc、free、rand、atoi 等。
这些函数可以帮助程序员进行动态内存分配、随机数生成、字符串转换等操作。
例如,malloc 函数可以用来动态分配指定大小的内存空间,而 rand 函数则可以用来生成一个指定范围内的随机数。
三、math.h。
math.h 是 C 语言中的标准数学库头文件,它包含了一系列与数学运算相关的函数。
其中,最常用的函数包括 sin、cos、sqrt、pow 等。
这些函数可以帮助程序员进行各种数学运算,如三角函数计算、平方根计算、幂运算等。
例如,sin 函数可以用来计算给定角度的正弦值,而 sqrt 函数则可以用来计算一个数的平方根。
四、string.h。
string.h 是 C 语言中的标准字符串库头文件,它包含了一系列与字符串操作相关的函数。
其中,最常用的函数包括 strlen、strcpy、strcat、strcmp 等。
这些函数可以帮助程序员进行字符串的长度计算、复制、连接、比较等操作。
例如,strlen 函数可以用来计算一个字符串的长度,而 strcpy 函数则可以用来将一个字符串复制到另一个字符串中。
c语言常用库函数
c语言常用库函数c 语言常用库函数包括:1. 标准库函数:这些函数在程序的源文件中可以直接使用,不需要额外的安装,最常用的有 printf() , scanf() , getchar() , putchar() , malloc () , calloc () , realloc () , free () 、sprintf() , sscanf () 等。
2. 文件读写:文件读写是编程中最常用到的函数之一,常用的是fopen() , fclose() , fread() , fwrite() , fseek () , ftell() 等。
3. 字符串处理:字符串处理也是个重要块,常用的有 strlen() , strcpy() , strcat() , strcmp() , strncmp() , strchr() ,strrchr() , strstr() , strspn() , strpbrk() , strtok() 等。
4. 内存操作:内存操作相关的常用函数有 memset() ,memcpy() , memmove() , memcmp() 等。
5. 数学计算:c 语言中的数学计算函数有 abs() , fabs() ,floor() , ceil() , log() , exp() , pow() , sin() , cos() ,tan() , asin() , acos() , atan() 等。
6. 时间日期:相关的函数有 time() , clock() , localtime() , gmtime() , mktime() 等。
7. 其它:还有一些常用的函数如 qsort() , rand() , srand() , system() 等。
常用C语言标准库函数
常用C语言标准库函数C语言编译系统提供了众多的预定义库函数和宏。
用户在编写程序时,可以直接调用这些库函数和宏。
这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。
1.测试函数Isalnum原型:int isalnum(int c)功能:测试参数c是否为字母或数字:是则返回非零;否则返回零头文件:ctype.hIsapha原型:int isapha(int c)功能:测试参数c是否为字母:是则返回非零;否则返回零头文件:ctype.hIsascii原型:int isascii(int c)功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零头文件:ctype.hIscntrl原型:int iscntrl(int c)功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零头文件:ctype.hIsdigit原型:int isdigit(int c)功能:测试参数c是否为数字:是则返回非零;否则返回零。
头文件:ctype.hIsgraph原型:int isgraph(int c)功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零头文件:ctype.hIslower原型:int islower(int c)功能:测试参数c是否为小写字母:是则返回非零;否则返回零头文件:ctype.hIsprint原型:int isprint(int c)功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零头文件:ctype.hIspunct原型:int ispunct(int c)功能:测试参数c是否为标点符号:是则返回非零;否则返回零头文件:ctype.hIsupper原型:int isupper(inr c)功能:测试参数c是否为大写字母:是则返回非零;否则返回零Isxdigit原型:int isxdigit(int c)功能:测试参数c是否为十六进制数:是则返回非零;否则返回零2.数学函数abs原型:int abs(int i)功能:返回整数型参数i的绝对值头文件:stdlib.h,math.hacos原型:double acos(double x)功能:返回双精度参数x的反余弦三角函数值头文件:math.hasin原型:double asin(double x)功能:返回双精度参数x的反正弦三角函数值头文件:math.hatan原型:double atan(double x)功能:返回双精度参数的反正切三角函数值头文件:math.hatan2原型:double atan2(double y,double x)功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值头文件:math.hcabs原型:double cabs(struct complex znum)功能:返回一个双精度数,为计算出复数znum的绝对值。
附录D C语言常用库函数
帮助文件目录语法:❖if(表达式) 语句❖if(表达式)语句1 else 语句2❖if (表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3else if(表达式m)语句melse 语句n❖switch(表达式){ case 常量表达式1:语句1case 常量表达式2:语句2┋case 常量表达式n:语句ndefault :语句n+1}❖while (表达式) 语句;❖do 语句 while(表达式);❖for(表达式1;表达式2;表达式3)语句❖break;❖continue;附录C ASCII编码对照表附录E 常用头文件#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类#include <complex> //复数类#include <ios> //基本输入/输出支持#include <iosfwd> //输入/输出系统使用的前置声明#include <iostream>#include <istream> //基本输入流#include <ostream> //基本输出流#include <queue> //STL 队列容器#include <set> //STL 集合容器#include <sstream> //基于字符串的流#include <stack> //STL 堆栈容器#include <stdexcept> //标准异常类#include <streambuf> //底层输入/输出支持#include <string> //字符串类#include <utility> //STL 通用模板类#include <vector> //STL 动态数组容器#include <dos.h>通用dos中断接口函数#include <conio.h>)驻留并退出函数附录D C语言常用库函数附录B C语言运算符优先级和结合性。
c语言队列库函数
c语言队列库函数C语言队列库函数队列是一种常见的数据结构,它具有先进先出(FIFO)的特点。
在C 语言中,我们可以使用队列库函数来实现队列的操作。
下面是一些常用的队列库函数:1. void *malloc(size_t size)该函数用于动态分配内存空间,返回值为指向分配内存的指针。
在队列中,我们需要动态分配内存来存储队列元素。
2. void free(void *ptr)该函数用于释放动态分配的内存空间,参数为指向要释放的内存的指针。
在队列中,当队列元素出队时,需要释放其占用的内存空间。
3. void *calloc(size_t nmemb, size_t size)该函数用于动态分配内存空间,并将其初始化为0,返回值为指向分配内存的指针。
在队列中,我们可以使用该函数来初始化队列。
4. void *realloc(void *ptr, size_t size)该函数用于重新分配内存空间,参数为指向要重新分配的内存的指针和新的内存大小。
在队列中,当队列元素入队时,如果队列已满,需要重新分配内存空间。
5. int printf(const char *format, ...)该函数用于输出格式化的字符串,参数为格式化字符串和可变参数列表。
在队列中,我们可以使用该函数来输出队列元素。
6. int scanf(const char *format, ...)该函数用于输入格式化的数据,参数为格式化字符串和可变参数列表。
在队列中,我们可以使用该函数来输入队列元素。
7. void *memcpy(void *dest, const void *src, size_t n)该函数用于将源内存区域的内容复制到目标内存区域,参数为目标内存指针、源内存指针和要复制的字节数。
在队列中,我们可以使用该函数来复制队列元素。
8. void *memmove(void *dest, const void *src, size_t n)该函数用于将源内存区域的内容移动到目标内存区域,参数为目标内存指针、源内存指针和要移动的字节数。
C语言标准库函数的使用
C语言标准库函数的使用在C语言编程中,标准库函数是非常重要且经常使用的工具。
标准库函数提供了各种功能,包括输入输出、字符串操作、数学运算等。
掌握这些函数的使用方法和特性,能够帮助程序员更高效地开发和调试代码。
本文将介绍几个常用的C语言标准库函数及其使用方法。
一、输入输出函数1. printf()函数printf()函数是C语言中最常用的输出函数之一,用于在控制台输出信息。
它的基本语法如下:```int printf(const char *format, ...);```其中,`format`参数是一个字符串,用来指定输出的格式。
例如,使用 `%d` 表示输出整数,`%f` 表示输出浮点数,`%s` 表示输出字符串等。
我们可以向 `printf()` 函数传递不同的参数来输出不同类型的数据。
2. scanf()函数scanf()函数用于从控制台输入数据,并将输入的值存储到指定的变量中。
它的基本语法如下:```int scanf(const char *format, ...);```与 printf() 函数类似,scanf() 函数也使用了格式字符串来指定输入的数据类型。
例如,`%d` 表示输入整数,`%f` 表示输入浮点数,`%s` 表示输入字符串等。
我们可以根据需要使用不同的格式符来读取对应类型的数据。
二、字符串处理函数1. strcpy()函数strcpy()函数用于将一个字符串复制到另一个字符串中。
它的基本语法如下:```char* strcpy(char* destination, const char* source);```其中,`destination`参数是目标字符串,`source`参数是源字符串。
使用该函数可以将源字符串中的内容复制到目标字符串中。
2. strlen()函数strlen()函数用于计算字符串的长度(不包括末尾的空字符'\0')。
它的基本语法如下:```size_t strlen(const char* str);```其中,`str`参数为需要计算长度的字符串。
include 常用的 c语言库函数
include 常用的 c语言库函数==============在编写 C 语言程序时,我们常常需要使用一些库函数来帮助我们完成特定的任务。
这些库函数通常由第三方开发者编写,并被封装成易于使用的函数接口,供开发者调用。
在 C 语言中,常用的库函数非常多,下面我们将介绍一些常用的库函数。
1. **stdio.h**`stdio.h` 是标准输入输出库的头文件,提供了基本的输入输出功能。
常用的函数有 `printf()`, `scanf()`, `getchar()`, `putchar()` 等。
* **printf()**:格式化输出函数,用于将数据输出到屏幕上。
* **scanf()**:格式化输入函数,用于从标准输入(如键盘)读取数据。
* **getchar()**:从标准输入读取一个字符。
* **putchar()**:在标准输出打印一个字符。
示例:```c#include <stdio.h>int main() {printf("Hello, World!\n");return 0;}```2. **stdlib.h**`stdlib.h` 是标准库头文件,提供了许多常用的函数,如分配和释放内存的函数(如 `malloc()`, `calloc()`, `realloc()` 和 `free()`),随机数生成函数(如 `rand()` 和 `srand()`)等。
* **malloc()**:动态内存分配函数,用于在堆上分配一定大小的内存空间。
* **calloc()**:类似于 `malloc()`,但它会将分配的内存初始化为零。
* **realloc()**:重新分配内存函数,用于改变已分配内存的大小。
* **free()**:释放已分配的内存空间。
示例:```c#include <stdlib.h>int main() {int *ptr = (int*)malloc(sizeof(int));if (ptr == NULL) {printf("Memory allocation failed!\n");return -1;}*ptr = 42;printf("The value of ptr is: %d\n", *ptr);free(ptr);return 0;}```3. **string.h**`string.h` 是字符串处理库的头文件,提供了许多处理字符串的函数,如字符串连接(`strcat()`),字符串比较(`strcmp()`),字符串截取(`substr()`)等。
C语言常用库
C语言常用库C语言是一种通用的编程语言,广泛应用于系统软件的开发和嵌入式系统的编程。
它提供了丰富的库函数,用于实现各种功能。
本文将介绍一些常用的C语言库,帮助读者深入了解和应用这些库函数。
一、stdio.h库stdio.h库是C语言中最常用的库之一,主要用于输入和输出操作。
它提供了一系列函数,例如printf()用于格式化输出,scanf()用于格式化输入,fgets()用于读取一行字符串等。
这些函数能够方便地进行输入输出操作,是C语言常用的基础函数库。
二、stdlib.h库stdlib.h库是C语言中的标准库之一,提供了一些常用的函数,用于实现内存管理、随机数生成、字符串转换等功能。
例如,malloc()用于动态分配内存,free()用于释放动态分配的内存,rand()用于生成随机数,atoi()用于字符串转整数等。
这些函数能够提高代码的灵活性和可读性,方便进行复杂的计算和运算。
三、string.h库string.h库是C语言中用于处理字符串的库,提供了一些常用的字符串操作函数。
例如,strcpy()用于复制字符串,strlen()用于获取字符串长度,strcat()用于连接字符串等。
这些函数能够方便地进行字符串处理,执行字符串的查找、替换和比较等操作。
四、math.h库math.h库是C语言中用于数学计算的库,提供了一些常用的数学函数。
例如,sqrt()用于求平方根,pow()用于计算幂次方,sin()用于计算正弦值等。
这些函数能够方便地进行数学运算,满足复杂的计算需求。
五、time.h库time.h库是C语言中用于时间和日期操作的库,提供了一些常用的时间相关函数。
例如,time()用于获取当前时间,ctime()用于将时间转换为字符串,difftime()用于计算时间差等。
这些函数能够方便地获取系统时间、进行时间的转换和计算。
六、ctype.h库ctype.h库是C语言中用于字符处理的库,提供了一些常用的字符操作函数。
c语言标准库函数
c语言标准库函数C语言标准库函数。
C语言是一种广泛应用的计算机编程语言,而标准库函数则是C语言中非常重要的一部分。
标准库函数提供了大量的功能,包括输入输出、字符串处理、数学运算等,为程序员提供了丰富的工具来完成各种任务。
本文将对C语言标准库函数进行详细介绍,包括常用的函数及其用法。
1. 输入输出函数。
C语言中最基本的输入输出函数包括printf()和scanf()。
printf()函数用于输出格式化的数据到标准输出设备,而scanf()函数则用于从标准输入设备中读取格式化的数据。
这两个函数是C语言中最常用的函数之一,程序员可以利用它们来实现程序与用户的交互。
除了printf()和scanf()外,C语言标准库还提供了一系列其他的输入输出函数,包括putchar()、getchar()、puts()和gets()等。
这些函数可以帮助程序员实现更加灵活和高效的输入输出操作。
2. 字符串处理函数。
字符串处理是C语言编程中非常常见的任务,而标准库中提供了丰富的字符串处理函数来帮助程序员完成这些任务。
常用的字符串处理函数包括strlen()、strcpy()、strcat()和strcmp()等。
这些函数可以帮助程序员实现字符串的长度计算、复制、拼接和比较等操作。
除了上述的基本字符串处理函数外,C语言标准库还提供了一系列其他的字符串处理函数,包括strchr()、strstr()、strtok()和sprintf()等。
这些函数可以帮助程序员实现更加复杂和高级的字符串处理操作。
3. 数学运算函数。
C语言标准库中提供了丰富的数学运算函数,包括常见的数学运算、三角函数、指数对数函数等。
常用的数学运算函数包括sqrt()、pow()、sin()、cos()和tan()等。
这些函数可以帮助程序员实现各种复杂的数学运算操作。
除了数学运算函数外,C语言标准库还提供了一系列其他的数学运算函数,包括abs()、rand()、srand()和ceil()等。
c语言标准库函数手册
c语言标准库函数手册C语言标准库函数手册。
C语言标准库函数是C语言中非常重要的一部分,它包含了大量的函数,可以帮助程序员实现各种功能。
本手册将详细介绍C语言标准库中常用的函数,希望能够帮助读者更好地理解和应用这些函数。
一、stdio.h。
stdio.h是C语言标准库中的一个头文件,它包含了一些常用的输入输出函数。
其中,最常用的函数包括printf、scanf、fopen、fclose等。
这些函数可以帮助程序员实现输入输出操作,是C语言编程中必不可少的一部分。
1. printf。
printf函数是C语言中用来输出格式化字符串的函数,它可以根据格式化字符串中的格式化指令,将相应的数据输出到标准输出设备(通常是显示器)。
例如,可以使用printf("%d", num)来输出一个整数。
2. scanf。
scanf函数是C语言中用来输入数据的函数,它可以根据格式化字符串中的格式化指令,从标准输入设备(通常是键盘)中读取数据并存储到指定的变量中。
例如,可以使用scanf("%d", &num)来输入一个整数并存储到变量num中。
3. fopen和fclose。
fopen函数用来打开一个文件,并返回一个指向该文件的指针。
fclose函数用来关闭一个已打开的文件。
这两个函数在文件操作中非常常用,可以帮助程序员实现文件的读写操作。
二、stdlib.h。
stdlib.h是C语言标准库中的另一个头文件,它包含了一些常用的通用工具函数。
其中,最常用的函数包括malloc、free、rand、exit等。
这些函数可以帮助程序员实现动态内存分配、随机数生成、程序退出等功能。
1. malloc和free。
malloc函数用来在堆上分配指定大小的内存空间,并返回指向该空间的指针。
free函数用来释放之前分配的内存空间。
这两个函数在动态内存管理中非常重要,可以帮助程序员灵活地管理内存空间。
C语言库函数手册
分类函数,所在函数库为ctype.hint isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回非0值,否则返回0int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)返回非0值,否则返回0int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'),走纸换行('\f'),垂直制表符('\v'),换行符('\n')返回非0值,否则返回0int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数ex的值double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr 中double ldexp(double value,int exp); 返回value*2exp的值double log(double x) 返回logex的值double log10(double x) 返回log10x的值double pow(double x,double y) 返回xy的值double pow10(int p) 返回10p的值double sqrt(double x) 返回+√x的值double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度double atan(double x) 返回x的反正切tan-1(x)值,x为弧度double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度double sin(double x) 返回x的正弦sin(x)值,x为弧度double tan(double x) 返回x的正切tan(x)值,x为弧度double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度double tanh(double x) 返回x的双曲正切tanh(x)值,x为弧度double hypot(double x,double y) 返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2double ceil(double x) 返回不小于x的最小整数double floor(double x) 返回不大于x的最大整数void srand(unsigned seed) 初始化随机数发生器int rand() 产生一个随机数并返回这个数double poly(double x,int n,double c[])从参数产生一个多项式double modf(double value,double *iptr)将双精度数value分解成尾数和阶double fmod(double x,double y) 返回x/y的余数double frexp(double value,int *eptr) 将双精度数value分成尾数和阶double atof(char *nptr) 将字符串nptr转换成浮点数并返回这个浮点数double atoi(char *nptr) 将字符串nptr转换成整数并返回这个整数double atol(char *nptr) 将字符串nptr转换成长整数并返回这个整数char *ecvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *fcvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *gcvt(double value,int ndigit,char *buf)将数value转换成字符串并存于buf中,并返回buf的指针char *ultoa(unsigned long value,char *string,int radix)将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *ltoa(long value,char *string,int radix)将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *itoa(int value,char *string,int radix)将整数value转换成字符串存入string,radix为转换时所用基数double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0 int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0 long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0 double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,int matherr(struct exception *e)用户修改数学错误返回信息函数(没有必要使用)double _matherr(_mexcep why,char *fun,double *arg1p,double *arg2p,double retval)用户修改数学错误返回信息函数(没有必要使用)unsigned int _clear87() 清除浮点状态字并返回原来的浮点状态void _fpreset() 重新初使化浮点数学程序包unsigned int _status87() 返回浮点状态字目录函数,所在函数库为dir.h、dos.hint chdir(char *path) 使指定的目录path(如:"C:\\WPS")变成当前的工作目录,成功返回0int findfirst(char *pathname,struct ffblk *ffblk,int attrib)查找指定的文件,成功返回0pathname为指定的目录名和文件名,如"C:\\WPS\\TXT"ffblk为指定的保存文件信息的一个结构,定义如下:┏━━━━━━━━━━━━━━━━━━┓┃struct ffblk ┃┃{ ┃┃char ff_reserved[21]; /*DOS保留字*/┃┃char ff_attrib; /*文件属性*/ ┃┃int ff_ftime; /*文件时间*/ ┃┃int ff_fdate; /*文件日期*/ ┃┃long ff_fsize; /*文件长度*/ ┃┃char ff_name[13]; /*文件名*/ ┃┃} ┃┗━━━━━━━━━━━━━━━━━━┛attrib为文件属性,由以下字符代表┏━━━━━━━━━┳━━━━━━━━┓┃FA_RDONLY 只读文件┃FA_LABEL 卷标号┃┃FA_HIDDEN 隐藏文件┃FA_DIREC 目录┃┃FA_SYSTEM 系统文件┃FA_ARCH 档案┃┗━━━━━━━━━┻━━━━━━━━┛例:struct ffblk ff;findfirst("*.wps",&ff,FA_RDONLY);int findnext(struct ffblk *ffblk) 取匹配finddirst的文件,成功返回0void fumerge(char *path,char *drive,char *dir,char *name,char * ext)此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名存与path中.int fnsplit(char *path,char *drive,char *dir,char *name,char *ext) 此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\ LIB等),文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.int getcurdir(int drive,char *direc) 此函数返回指定驱动器的当前工作目录名称drive 指定的驱动器(0=当前,1=A,2=B,3=C等)direc 保存指定驱动器当前工作路径的变量成功返回0char *getcwd(char *buf,iint n) 此函数取当前工作目录并存入buf中,直到n个字节长为为止.错误返回NULLint getdisk() 取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等) int setdisk(int drive) 设置要使用的驱动器drive(0=A,1=B,2=C等), 返回可使用驱动器总数int mkdir(char *pathname) 建立一个新的目录pathname,成功返回0 int rmdir(char *pathname) 删除一个目录pathname,成功返回0char *mktemp(char *template) 构造一个当前目录上没有的文件名并存于template中char *searchpath(char *pathname) 利用MSDOS找出文件filename所在路径,,此函数使用DOS的PATH变量,未找到文件返回NULL进程函数,所在函数库为stdlib.h、process.hvoid abort() 此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,并异常终止程序无返回值int exec…装入和运行其它程序int execl( char *pathname,char *arg0,char *arg1,…,char *argn, NULL)int ex ecle( char *pathname,char *arg0,char *arg1,…,char *argn,NULL,char *envp[])int execlp( char *pathname,char *arg0,char *arg1,…,NULL)int execlpe(char *pathname,char *arg0,char *arg1,…,NULL,char * envp[])int execv( char *pathname,char *argv[])int execve( char *pathname,char *argv[],char *envp[])int execvp( char *pathname,char *argv[])int execvpe(char *pathname,char *argv[],char *envp[]) exec函数族装入并运行程序pathname,并将参数arg0(arg1,arg2,argv[],envp[])传递给子程序,出错返回-1在exec函数族中,后缀l、v、p、e添加到exec后,所指定的函数将具有某种操作能力有后缀p时,函数可以利用DOS的PATH变量查找子程序文件l时,函数中被传递的参数个数固定v时,函数中被传递的参数个数不固定e时,函数传递指定参数envp,允许改变子进程的环境,无后缀e时,子进程使用当前程序的环境void _exit(int status)终止当前程序,但不清理现场void exit(int status) 终止当前程序,关闭所有文件,写缓冲区的输出(等待输出),并调用任何寄存器的"出口函数",无返回值int spawn…运行子程序int spawnl( int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL)int spawnle( int mode,char *pathname,char *arg0,char *arg1,…, char *argn,NULL,char *envp[])int spawnlp( int mode,char *pathn ame,char *arg0,char *arg1,…, char *argn,NULL)int spawnlpe(int mode,char *pathname,char *arg0,char *arg1,…,char *argn,NULL,char *envp[])int spawnv( int mode,char *pathname,char *argv[])int spawnve( int mode,char *pathname,char *argv[],char *envp [])int spawnvp( int mode,char *pathname,char *argv[])int spawnvpe(int mode,char *pathname,char *argv[],char *envp [])spawn函数族在mode模式下运行子程序pathname,并将参数arg0(arg1,arg2,argv[],envp[])传递给子程序.出错返回-1mode为运行模式mode为P_WAIT 表示在子程序运行完后返回本程序P_NOWAIT 表示在子程序运行时同时运行本程序(不可用)P_OVERLAY表示在本程序退出后运行子程序在spawn函数族中,后缀l、v、p、e添加到spawn后,所指定的函数将具有某种操作能力有后缀p时, 函数利用DOS的PATH查找子程序文件l时, 函数传递的参数个数固定.v时, 函数传递的参数个数不固定.e时, 指定参数envp可以传递给子程序,允许改变子程序运行环境.当无后缀e时,子程序使用本程序的环境.int system(char *command) 将MSDOS命令command传递给DO S执行转换子程序,函数库为math.h、stdlib.h、ctype.h、float.hchar *ecvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *fcvt(double value,int ndigit,int *decpt,int *sign)将浮点数value转换成字符串并返回该字符串char *gcvt(double value,int ndigit,char *buf)将数value转换成字符串并存于buf中,并返回buf的指针char *ultoa(unsigned long value,char *string,int radix)将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *ltoa(long value,char *string,int radix)将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数char *itoa(int value,char *string,int radix)将整数value转换成字符串存入string,radix为转换时所用基数double atof(char *nptr) 将字符串nptr转换成双精度数,并返回这个数,错误返回0int atoi(char *nptr) 将字符串nptr转换成整型数, 并返回这个数,错误返回0long atol(char *nptr) 将字符串nptr转换成长整型数,并返回这个数,错误返回0double strtod(char *str,char **endptr)将字符串str转换成双精度数,并返回这个数,long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,int toascii(int c) 返回c相应的ASCIIint tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z ')int _tolower(int ch) 返回ch相应的小写字母('a'-'z')int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-' Z')int _toupper(int ch) 返回ch相应的大写字母('A'-'Z')诊断函数,所在函数库为assert.h、math.hvoid assert(int test) 一个扩展成if语句那样的宏,如果test测试失败,就显示一个信息并异常终止程序,无返回值void perror(char *string) 本函数将显示最近一次的错误信息,格式如下:字符串string:错误信息char *strerror(char *str) 本函数返回最近一次的错误信息,格式如下:字符串str:错误信息int matherr(struct exception *e)用户修改数学错误返回信息函数(没有必要使用)double _matherr(_mexcep why,char *fun,double *arg1p,double *arg2p,double retval)用户修改数学错误返回信息函数(没有必要使用) 输入输出子程序,函数库为io.h、conio.h、stat.h、dos.h、stdio.h、signal.hint kbhit() 本函数返回最近所敲的按键int fgetchar() 从控制台(键盘)读一个字符,显示在屏幕上int getch() 从控制台(键盘)读一个字符,不显示在屏幕上int putch() 向控制台(键盘)写一个字符int getchar() 从控制台(键盘)读一个字符,显示在屏幕上int putchar() 向控制台(键盘)写一个字符int getche() 从控制台(键盘)读一个字符,显示在屏幕上int ungetch(int c) 把字符c退回给控制台(键盘)char *cgets(char *string) 从控制台(键盘)读入字符串存于string中int scanf(char *format[,argument…])从控制台读入一个字符串,分别对各个参数进行赋值,使用BIOS进行输出int vscanf(char *format,Valist param)从控制台读入一个字符串,分别对各个参数进行赋值,使用BIOS进行输出,参数从Valist param中取得int cscanf(char *format[,argument…])从控制台读入一个字符串,分别对各个参数进行赋值,直接对控制台作操作,比如显示器在显示时字符时即为直接写频方式显示int sscanf(char *string,char *format[,argument,…])通过字符串string,分别对各个参数进行赋值int vsscanf(char *string,char *format,Vlist param)通过字符串string,分别对各个参数进行赋值,参数从Vlist param中取得int puts(char *string) 发关一个字符串string给控制台(显示器), 使用BIOS进行输出void cputs(char *string) 发送一个字符串string给控制台(显示器), 直接对控制台作操作,比如显示器即为直接写频方式显示int printf(char *format[,argument,…]) 发送格式化字符串输出给控制台(显示器) 使用BIOS进行输出int vprintf(char *format,Valist param) 发送格式化字符串输出给控制台(显示器) 使用BIOS进行输出,参数从Valist param中取得int cprintf(char *format[,argument,…]) 发送格式化字符串输出给控制台(显示器),直接对控制台作操作,比如显示器即为直接写频方式显示int vcprintf(char *format,Valist param)发送格式化字符串输出给控制台(显示器),直接对控制台作操作,比如显示器即为直接写频方式显示,参数从Valist param中取得int sprintf(char *string,char *format[,argument,…])将字符串string的内容重新写为格式化后的字符串int vsprintf(char *string,char *format,Valist param)将字符串string的内容重新写为格式化后的字符串,参数从Valist param中取得int rename(char *oldname,char *newname)将文件oldname的名称改为newnameint ioctl(int handle,int cmd[,int *argdx,int argcx])本函数是用来控制输入/输出设备的,请见下表:┌───┬────────────────────────────┐│cmd值│功能│├───┼────────────────────────────┤│0 │取出设备信息││ 1 │设置设备信息││ 2 │把argcx字节读入由argdx所指的地址││ 3 │在argdx所指的地址写argcx字节││ 4 │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=2时一样││ 5 │除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=3时一样││ 6 │取输入状态││7 │取输出状态││8 │测试可换性;只对于DOS 3.x ││11 │置分享冲突的重算计数;只对DOS 3.x │└───┴────────────────────────────┘int (*ssignal(int sig,int(*action)())()执行软件信号(没必要使用)int gsignal(int sig) 执行软件信号(没必要使用)int _open(char *pathname,int access)为读或写打开一个文件,按后按access来确定是读文件还是写文件,access值见下表┌──────┬────────────────────┐│access值│意义│├──────┼────────────────────┤│O_RDONLY│读文件││O_WRONLY│写文件││O_RDWR│即读也写││O_NOINHERIT │若文件没有传递给子程序,则被包含││O_DENYALL│只允许当前处理必须存取的文件││O_DENYWRITE │只允许从任何其它打开的文件读││O_DENYREAD│只允许从任何其它打开的文件写││O_DENYNONE│允许其它共享打开的文件│└──────┴────────────────────┘接口子程序,所在函数库为:dos.h、bios.hunsigned sleep(unsigned seconds)暂停seconds微秒(百分之一秒)int unlink(char *filename)删除文件filenameunsigned FP_OFF(void far *farptr)本函数用来取远指针farptr的偏移量unsigned FP_SEG(void far *farptr)本函数用来没置远指针farptr的段值void far *MK_FP(unsigned seg,unsigned off)根据段seg和偏移量off构造一个far指针unsigned getpsp()取程序段前缀的段地址,并返回这个地址char *parsfnm(char *cmdline,struct fcb *fcbptr,int option) 函数分析一个字符串,通常,对一个文件名来说,是由cmdline所指的一个命令行.文件名是放入一个FCB中作为一个驱动器,文件名和扩展名.FCB是由fcb ptr所指定的.option参数是DOS分析系统调用时,AL文本的值.int absread(int drive,int nsects,int sectno,void *buffer)本函数功能为读特定的磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要读的扇区数,sect no为开始的逻辑扇区号,buffer为保存所读数据的保存空间int abswrite(int drive,int nsects,int sectno,void *buffer)本函数功能为写特定的磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要写的扇区数,sect no为开始的逻辑扇区号,buffer为保存所写数据的所在空间void getdfree(int drive,struct dfree *dfreep)本函数用来取磁盘的自由空间,drive为磁盘号(0=当前,1=A等).函数将磁盘特性的由dfreep指向的df ree结构中.dfree结构如下:┌───────────────────┐│struct dfree ││{ ││unsigned df_avail; /*有用簇个数*/ ││unsigned df_total; /*总共簇个数*/ ││unsigned df_bsec; /*每个扇区字节数*/││unsigned df_sclus; /*每个簇扇区数*/ ││} │└───────────────────┘char far *getdta() 取磁盘转换地址DTAvoid setdta(char far *dta)设置磁盘转换地址DTAvoid getfat(int drive,fatinfo *fatblkp)本函数返回指定驱动器drive(0=当前,1=A,2=B等)的文件分配表信息并存入结构fatblkp中,结构如下:┌──────────────────┐│struct fatinfo ││{ ││char fi_sclus; /*每个簇扇区数*/ ││char fi_fatid; /*文件分配表字节数*/││int fi_nclus; /*簇的数目*/ ││int fi_bysec; /*每个扇区字节数*/ ││} │└──────────────────┘void getfatd(struct fatinfo *fatblkp) 本函数返回当前驱动器的文件分配表信息,并存入结构fatblkp中,结构如下:┌──────────────────┐│struct fatinfo ││{ ││char fi_sclus; /*每个簇扇区数*/ ││char fi_fatid; /*文件分配表字节数*/││int fi_nclus; /*簇的数目*/ ││int fi_bysec; /*每个扇区字节数*/ ││} │└──────────────────┘int bdos(int dosfun,unsigned dosdx,unsigned dosal)本函数对MSDOS 系统进行调用,dosdx为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号int bdosptr(int dosfun,void *argument,unsiigned dosal)本函数对MSDOS系统进行调用,argument为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号int int86(int intr_num,union REGS *inregs,union REGS *outregs) 执行intr_num号中断,用户定义的寄存器值存于结构inregs中,执行完后将返回的寄存器值存于结构outregs中.int int86x(int intr_num,union REGS *inregs,union REGS *outregs, struct SREGS *segregs)执行intr_num号中断,用户定义的寄存器值存于结构inregs中和结构segregs中,执行完后将返回的寄存器值存于结构outregs中.int intdos(union REGS *inregs,union REGS *outregs)本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值存于结构inregs中,执行完后函数将返回的寄存器值存于结构outregs中int intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值存于结构inregs和segregs中,执行完后函数将返回的寄存器值存于结构outregs中void intr(int intr_num,struct REGPACK *preg)本函数中一个备用的8086软件中断接口它能产生一个由参数intr_num指定的8086软件中断.函数在执行软件中断前,从结构preg复制用户定义的各寄存器值到各个寄存器.软件中断完成后, 函数将当前各个寄存器的值复制到结构preg中.参数如下:intr_num 被执行的中断号preg为保存用户定义的寄存器值的结构,结构如下┌──────────────────────┐│struct REGPACK ││{ ││unsigned r_ax,r_bx,r_cx,r_dx; ││unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; ││} │└──────────────────────┘函数执行完后,将新的寄存器值存于结构preg中void keep(int status,int size)以status状态返回MSDOS,但程序仍保留于内存中,所占用空间由size决定.void ctrlbrk(int (*fptr)()) 设置中断后的对中断的处理程序.void disable() 禁止发生中断void enable() 允许发生中断void geninterrupt(int intr_num)执行由intr_num所指定的软件中断void interrupt(* getvect(int intr_num))() 返回中断号为intr_num的中断处理程序,例如: old_int_10h=getvect(0x10);void setvect(int intr_num,void interrupt(* isr)()) 设置中断号为intr_num的中断处理程序为isr,例如: setvect(0x10,new_int_10h);void harderr(int (*fptr)()) 定义一个硬件错误处理程序,每当出现错误时就调用fptr所指的程序void hardresume(int rescode)硬件错误处理函数void hardretn(int errcode) 硬件错误处理函数int inport(int prot) 从指定的输入端口读入一个字,并返回这个字int inportb(int port)从指定的输入端口读入一个字节,并返回这个字节void outport(int port,int word) 将字word写入指定的输出端口port void outportb(int port,char byte)将字节byte写入指定的输出端口port int peek(int segment,unsigned offset) 函数返回segment:offset处的一个字char peekb(int segment,unsigned offset)函数返回segment:offset处的一个字节void poke(int segment,int offset,char value) 将字value写到segment:offset处void pokeb(int segment,int offset,int value) 将字节value写到segment:offset处int randbrd(struct fcb *fcbptr,int reccnt)函数利用打开fcbptr所指的FCB读reccnt个记录.int randbwr(struct fcb *fcbptr,int reccnt)函数将fcbptr所指的FCB中的reccnt个记录写到磁盘上void segread(struct SREGS *segtbl)函数把段寄存器的当前值放进结构s egtbl中int getverify() 取检验标志的当前状态(0=检验关闭,1=检验打开)void setverify(int value)设置当前检验状态,value为0表示关闭检验,为1表示打开检验int getcbrk()本函数返回控制中断检测的当前设置int setcbrk(int value)本函数用来设置控制中断检测为接通或断开当value=0时,为断开检测.当value=1时,为接开检测int dosexterr(struct DOSERR *eblkp)取扩展错误.在DOS出现错误后,此函数将扩充的错误信息填入eblkp所指的DOSERR结构中.该结构定义如下:┌──────────────┐│struct DOSERR ││{ ││int exterror;/*扩展错误*/ ││char class; /*错误类型*/ ││char action; /*方式*/ ││char locus; /*错误场所*/ ││} │└──────────────┘操作函数,所在函数库为string.h、mem.hmem…操作存贮数组void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)void *memchr(void *s,char ch,unsigned n)void *memcmp(void *s1,void *s2,unsigned n)int memicmp(void *s1,void *s2,unsigned n)void *memmove(void *destin,void *source,unsigned n)void *memcpy(void *destin,void *source,unsigned n)void *memset(void *s,char ch,unsigned n)这些函数,mem…系列的所有成员均操作存贮数组.在所有这些函数中,数组是n 字节长.memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向,以例正确地复制覆盖的字节.memmove与memcpy相同.memset将s的所有字节置于字节ch中.s数组的长度由n给出.memcmp比较正好是n字节长的两个字符串s1和s2.些函数按无符号字符比较字节,因此,memcmp("0xFF","\x7F",1)返回值大于0.memicmp比较s1和s2的前n个字节,不管字符大写或小写.memccpy从source复制字节到destin.复制一结束就发生下列任一情况:(1)字符ch首选复制到destin.(2)n个字节已复制到destin.memchr对字符ch检索s数组的前n个字节.返回值:memmove和memcpy返回destinmemset返回s的值memcmp和memicmp─┬─若s1<s2返回值小于0├─若s1=s2返回值等于0└─若s1>s2返回值大于0memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针;否则返回NULLmemchr返回在s中首先出现ch的一个指针;如果在s数组中不出现ch,就返回NULL.void movedata(int segsrc,int offsrc,int segdest,int offdest,unsigned numbytes)本函数将源地址(segsrc:offsrc)处的numbytes个字节复制到目标地址(segdest:offdest)void movemem(void *source,void *destin,unsigned len) 本函数从source处复制一块长len字节的数据到destin.若源地址和目标地址字符串重迭,则选择复制方向,以便正确的复制数据.void setmem(void *addr,int len,char value)本函数把addr所指的块的第一个字节置于字节value中.str…字符串操作函数char stpcpy(char *dest,const char *src)将字符串src复制到destchar strcat(char *dest,const char *src)将字符串src添加到dest末尾char strchr(const char *s,int c)检索并返回字符c在字符串s中第一次出现的位置int strcmp(const char *s1,const char *s2)比较字符串s1与s2的大小,并返回s1-s2char strcpy(char *dest,const char *src)将字符串src复制到destsize_t strcspn(const char *s1,const char *s2)扫描s1,返回在s1中有,在s2中也有的字符个数char strdup(const char *s)将字符串s复制到最近建立的单元int stricmp(const char *s1,const char *s2)比较字符串s1和s2,并返回s1-s2size_t strlen(const char *s)返回字符串s的长度char strlwr(char *s)将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串char strncat(char *dest,const char *src,size_t maxlen) 将字符串src中最多maxlen个字符复制到字符串dest中int strncmp(const char *s1,const char *s2,size_t maxlen) 比较字符串s1与s2中的前maxlen个字符char strncpy(char *dest,const char *src,size_t maxlen) 复制src中的前maxlen个字符到dest中int strnicmp(const char *s1,const char *s2,size_t maxlen) 比较字符串s1与s2中的前maxlen个字符char strnset(char *s,int ch,size_t n)将字符串s的前n个字符置于ch中char strpbrk(const char *s1,const char *s2)扫描字符串s1,并返回在s1和s2中均有的字符个数char strrchr(const char *s,int c)扫描最后出现一个给定字符c的一个字符串schar strrev(char *s)将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串char strset(char *s,int ch)将一个字符串s中的所有字符置于一个给定的字符chsize_t strspn(const char *s1,const char *s2)扫描字符串s1,并返回在s1和s2中均有的字符个数char strstr(const char *s1,const char *s2)扫描字符串s2,并返回第一次出现s1的位置char strtok(char *s1,const char *s2)检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔char strupr(char *s)将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串存贮分配子程序,所在函数库为dos.h、alloc.h、malloc.h、stdlib.h、pro cess.hint allocmem(unsigned size,unsigned *seg)利用DOS分配空闲的内存,size为分配内存大小,seg为分配后的内存指针int freemem(unsigned seg)释放先前由allocmem分配的内存,seg为指定的内存指针int setblock(int seg,int newsize)本函数用来修改所分配的内存长度, seg为已分配内存的内存指针,newsize为新的长度int brk(void *endds)本函数用来改变分配给调用程序的数据段的空间数量,新的空间结束地址为enddschar *sbrk(int incr)本函数用来增加分配给调用程序的数据段的空间数量,增加incr个字节的空间unsigned long coreleft() 本函数返回未用的存储区的长度,以字节为单位void *calloc(unsigned nelem,unsigned elsize)分配nelem个长度为elsize的内存空间并返回所分配内存的指针void *malloc(unsigned size)分配size个字节的内存空间,并返回所分配内存的指针void free(void *ptr)释放先前所分配的内存,所要释放的内存的指针为ptr void *realloc(void *ptr,unsigned newsize)改变已分配内存的大小,ptr 为已分配有内存区域的指针,newsize为新的长度,返回分配好的内存指针.long farcoreleft() 本函数返回远堆中未用的存储区的长度,以字节为单位void far *farcalloc(unsigned long units,unsigned long unitsz) 从远堆分配units个长度为unitsz的内存空间,并返回所分配内存的指针void *farmalloc(unsigned long size)分配size个字节的内存空间, 并返回分配的内存指针void farfree(void far *block)释放先前从远堆分配的内存空间, 所要释放的远堆内存的指针为blockvoid far *farrealloc(void far *block,unsigned long newsize)改变已分配的远堆内存的大小,block为已分配有内存区域的指针,newzie为新的长度,返回分配好的内存指针时间日期函数,函数库为time.h、dos.h在时间日期函数里,主要用到的结构有以下几个:总时间日期贮存结构tm┌──────────────────────┐│struct tm ││{ ││int tm_sec; /*秒,0-59*/ ││int tm_min; /*分,0-59*/ ││int tm_hour; /*时,0-23*/ ││int tm_mday; /*天数,1-31*/ ││int tm_mon; /*月数,0-11*/ ││int tm_year; /*自1900的年数*/ ││int tm_wday; /*自星期日的天数0-6*/ ││int tm_yday; /*自1月1日起的天数,0-365*/ ││int tm_isdst; /*是否采用夏时制,采用为正数*/││} │└──────────────────────┘日期贮存结构date┌───────────────┐│struct date ││{ ││int da_year; /*自1900的年数*/││char da_day; /*天数*/ ││char da_mon; /*月数1=Jan*/ ││} │└───────────────┘时间贮存结构time┌────────────────┐│struct time ││{ ││unsigned char ti_min; /*分钟*/││unsigned char ti_hour; /*小时*/││unsigned char ti_hund; ││unsigned char ti_sec; /*秒*/ │││└────────────────┘char *ctime(long *clock) 本函数把clock所指的时间(如由函数time返回的时间)转换成下列格式的字符串:Mon Nov 21 11:31:54 1983\n\0char *asctime(struct tm *tm)本函数把指定的tm结构类的时间转换成下列格式的字符串:Mon Nov 21 11:31:54 1983\n\0double difftime(time_t time2,time_t time1)计算结构time2和time1之间的时间差距(以秒为单位)struct tm *gmtime(long *clock)本函数把clock所指的时间(如由函数time 返回的时间)转换成格林威治时间,并以tm结构形式返回struct tm *localtime(long *clock)本函数把clock所指的时间(如函数time 返回的时间)转换成当地标准时间,并以tm结构形式返回void tzset()本函数提供了对UNIX操作系统的兼容性long dostounix(struct date *dateptr,struct time *timeptr) 本函数将dateptr所指的日期,timeptr所指的时间转换成UNIX格式,并返回自格林威治时间1970年1月1日凌晨起到现在的秒数void unixtodos(long utime,struct date *dateptr,struct time *timeptr)本函数将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成DOS格式并保存于用户所指的结构dateptr和timeptr中void getdate(struct date *dateblk)本函数将计算机内的日期写入结构dateblk中以供用户使用void setdate(struct date *dateblk)本函数将计算机内的日期改成由结构dateblk所指定的日期void gettime(struct time *timep)本函数将计算机内的时间写入结构timep中,以供用户使用void settime(struct time *timep)本函数将计算机内的时间改为由结构timep所指的时间long time(long *tloc)本函数给出自格林威治时间1970年1月1日凌晨至现在所经过的秒数,并将该值存于tloc所指的单元中.int stime(long *tp)本函数将tp所指的时间(例如由time所返回的时间) 写入计算机中.。
c语言标准库函数
c语言标准库函数C语言标准库函数。
C语言是一种广泛应用的计算机编程语言,而标准库函数是C 语言中非常重要的一部分。
标准库函数是由C语言标准委员会定义的,它们提供了大量的功能,可以帮助程序员完成各种任务,包括输入输出、字符串处理、内存管理等。
本文将对C语言标准库函数进行介绍,包括常用的函数及其用法。
1. 输入输出函数。
输入输出函数是C语言中最基本的函数之一,它们用于从键盘读取数据和向屏幕输出数据。
其中,printf函数用于向屏幕输出格式化的字符串,而scanf函数用于从键盘读取格式化的输入。
这两个函数是C语言中最常用的函数之一,程序员在编写C语言程序时几乎都会用到它们。
2. 字符串处理函数。
C语言中的字符串是以字符数组的形式存储的,而字符串处理函数可以帮助程序员对字符串进行各种操作。
常用的字符串处理函数包括strlen函数(用于计算字符串的长度)、strcpy函数(用于复制字符串)、strcat函数(用于连接字符串)等。
这些函数在实际编程中非常有用,可以帮助程序员高效地处理字符串数据。
3. 内存管理函数。
内存管理函数用于动态分配和释放内存,它们在C语言程序中扮演着非常重要的角色。
其中,malloc函数用于动态分配内存空间,而free函数用于释放已分配的内存空间。
另外,还有一些其他的内存管理函数,如calloc函数(用于分配指定数量的内存块,并将每个字节都初始化为0)和realloc函数(用于改变已分配内存块的大小)等。
这些函数在编写需要动态内存分配的程序时非常有用。
4. 数学函数。
C语言标准库中还包含了大量的数学函数,用于完成各种数学运算。
常用的数学函数包括sin函数(计算正弦值)、cos函数(计算余弦值)、sqrt函数(计算平方根)等。
这些函数可以帮助程序员完成各种复杂的数学计算,是C语言程序中不可或缺的一部分。
5. 时间日期函数。
C语言标准库中还包含了一些时间日期函数,用于获取系统当前时间、格式化时间等操作。
C语言常用的库函数表
附录C C语言常用的库函数
库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序。
每一种C编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。
ANSIC标准提出了一批建议提供的标准库函数。
它包括了目前多数C编译系统所提供的库函数,但也有一些是某些C编译系统未曾实现的。
考虑到通用性,本附录列出ANSIC建议的常用库函数。
由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不能全部介绍,只从教学需要的角度列出最基本的。
读者在编写C程序时可根据需要,查阅有关系统的函数使用手册。
1.数学函数
使用数学函数时,应该在源文件中使用预编译命令:
2.字符函数
在使用字符函数时,应该在源文件中使用预编译命令:
3.字符串函数
使用字符串中函数时,应该在源文件中使用预编译命令:
4.输入输出函数
在使用输入输出函数时,应该在源文件中使用预编译命令:
5.动态存储分配函数
在使用动态存储分配函数时,应该在源文件中使用预编译命令:
6.其他函数
有些函数由于不便归入某一类,所以单独列出。
使用这些函数时,应该在源文件中使用预编译命令:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.5 文件的定位
1. rewind 函数 rewind函数的作用是将文件指针重置于文件的开头。 函数的作用是将文件指针重置于文件的开头。 函数的作用是将文件指针重置于文件的开头 将一磁盘文件显示在屏幕上并复制到另一文件。 例10.2 将一磁盘文件显示在屏幕上并复制到另一文件。 #include “stdio.h” main( ) {FILE *fp1, *fp2; fp1=fopen(“file1.c”, “r”); fp2=fopen(“file2.c”, “w”); while ( !feof(fp1)) putchar(fgetc(fp1) ); rewind(fp1); while ( !feof(fp1)) fputc(fgetc(fp1), fp2); fclose(fp1); fclose(fp2); }
/* /* /* /* /* /* /* /* /* 缓冲区饱和程度 文件状态标志 文件号 无缓冲区取消字符输入 缓冲区大小, 缺省值512 缓冲区大小 缺省值 缓冲区 当前活动指针 草稿文件标识 作正确性检验 */ */ */ */ */ */ */ */ */
9.3 文பைடு நூலகம்的打开与关闭
在对文件读、写之前必须先打开该文件, 在对文件读、写之前必须先打开该文件,使用结束 后应关闭该文件。 后应关闭该文件。 1. 文件打开函数 fopen 函数调用格式: 函数调用格式: FILE *fp; fp=fopen(“文件名”,“使用方式”); 文件名” 使用方式 使用方式” 文件名 以指定的使用方式打开指定的文件。 以指定的使用方式打开指定的文件。 说明: 说明 指向打开的文件后, 就可以用它来访问该文件。 用 fp 指向打开的文件后 就可以用它来访问该文件。 “文件名”为任何合法的 文件名” 文件名。 文件名 为任何合法的DOS文件名。 文件名 使用方式见下表 见下表: 使用方式见下表
4. fprintf 和 fscanf 函数 调用格式: 调用格式 fprintf(文件指针 格式字符串 输出项表 文件指针, 格式字符串, 输出项表); 文件指针 fscanf(文件指针 格式字符串 输入项表 文件指针, 文件指针 格式字符串, 输入项表); fprintf 和fscanf 函数与 函数与printf 和scanf 函数的不同 之处是:前者的对象为磁盘文件,而后者的对象为终端。 之处是:前者的对象为磁盘文件,而后者的对象为终端。 5. putw 和 getw 函数 调用格式: 调用格式 putw(i, fp); 将整型量 i 的值输出到 fp指向的文件 指向的文件 i=getw(fp);
2. fseek 函数与文件的随机读写 C的流式文件既可以顺序读写也可以随机读写。 的流式文件既可以顺序读写也可以随机读写。 的流式文件既可以顺序读写也可以随机读写 fseek的调用格式: 的调用格式: 的调用格式 fseek( fp, 位移量 起始点 位移量, 起始点); 其中: 为指向文件的指针 为指向文件的指针; 其中:fp为指向文件的指针; 起始点 代码 ANSI C标准的指定名 标准的指定名 0 SEEK_SET 文件开头 1 SEEK_CUR 文件当前位置 2 SEEK_END 文件末尾 位移量是以“起始点”为基点向前移动的字节数。 位移量是以“起始点”为基点向前移动的字节数。 ANSI C 规定在位移量的末尾加上字母 L 表示 表示long型, 型 以便在读写大于64K的文件时不致出错。 例如 的文件时不致出错。 以便在读写大于 的文件时不致出错 例如:
7. 读写其它类型的数据 ANSI C 标准的 fread 和 fwrite 函数可以读写任 何类型的数据。 何类型的数据。当用户使用的系统未提供这两个函数 可以定义所需的函数。 时,可以定义所需的函数。 以二进制方式写入一个实数 num 至 fp 指向的文 件之函数可以定义如下: 件之函数可以定义如下 putfloat(num, fp) float num; FILE *fp; { char *s; int count; s=# for (count=0; count<4; count++) putc(s[count], fp); }
9.2 文件类型指针
“文件指针”是缓冲文件系统中的一个重要概念。在 文件指针”是缓冲文件系统中的一个重要概念。 文件指针 C系统的头文件 stdio.h 中定义了一个名叫 FILE 的结构 系统的头文件 体类型: 体类型:
typedef struct { short unsigned char unsigned char short unsigned char unsigned char unsigned short }FILE; level; flage; fd; hold; bsize; *buffer; *curp; istemp; token;
将一个磁盘文件中的信息复制到另一个磁盘文件中。 例9.1 将一个磁盘文件中的信息复制到另一个磁盘文件中。 用带参数的main函数编写。 函数编写。 用带参数的 函数编写
#include “stdio.h” main(argc, argv) int argc; char *argv[ ]; {FILE *in, *out; char ch; if (argc != 3) {printf(“你忘了输入文件名.\n”); exit(0); } if((in=fopen(argv[1],“r”))==NULL) {printf(“cannot open infile.\n”); exit(0); } if((out=fopen(argv[2],“w”))==NULL) {printf(“cannot open outfile.\n”); exit(0); } while(!feof(in)) fputc(fgetc(in),out); fclose(in); fclose(out); }
使用 含 义 方式 r 只读 文本文件 只读(文本文件 文本文件) W 只写 文本文件 只写(文本文件 文本文件)
若文件不存在
若有此文件
返回错误标志 打开指定的文件 建立新文件 打开指定的文件并清空内容 打开指定的文件,但只能在文 a 添加 文本文件 添加(文本文件 文本文件) 建立新文件 打开指定的文件 但只能在文 件末尾添加数据 r+ 读/写(文本文件 返回错误标志 打开指定的文件 文本文件) 写 文本文件 w+ 读/写(文本文件 建立新文件 打开指定的文件并清空内容 文本文件) 写 文本文件 a+ 读/写(文本文件 建立新文件 打开指定的文件 可读 写 文本文件) 打开指定的文件,可读 可读/写 写 文本文件 rb 只读 二进制文件 返回错误标志 打开指定的文件 只读(二进制文件 二进制文件) wb 只写 二进制文件 建立新文件 打开指定的文件并清空内容 只写(二进制文件 二进制文件) 打开指定的文件,但只能在文 ab 添加 二进制文件 建立新文件 打开指定的文件 但只能在文 添加(二进制文件 二进制文件) 件末尾添加数据 rb+ 读/写(二进制文件 返回错误标志 打开指定的文件 二进制文件)返回错误标志 写 二进制文件 wb+ 读/写(二进制文件 建立新文件 打开指定的文件并清空内容 二进制文件)建立新文件 写 二进制文件 ab+ 读/写(二进制文件 建立新文件 打开指定的文件 可读 写 二进制文件)建立新文件 打开指定的文件,可读 可读/写 写 二进制文件
从 fp指向的文件中读入一个整数并赋 指向的文件中读入一个整数并赋 给整型变量 i
6. fgets 和 fputs 函数 fgets 函数的调用格式: 函数的调用格式: fgets(str, n, fp); 从 fp 指向的文件中读入 n–1 个字符并放到字符数 的首地址。 组 str 中。该函数的返回值为 str 的首地址。 fputs 函数的调用格式: 函数的调用格式: fputs(str,fp); 指向的文件中。这里的str 将一个字符串输出到 fp 指向的文件中。这里的 可以是字符串常量、字符串数组名或字符型指针。 可以是字符串常量、字符串数组名或字符型指针。 输出成功,函数值为0,失败时为非 。 输出成功,函数值为 ,失败时为非0。
文本文件中的回车换行符在输入时转换为一个换行符, 文本文件中的回车换行符在输入时转换为一个换行符 在输出时又转换为回车换行符。 在输出时又转换为回车换行符。 为了可靠地打开指定的文件, 常用下列方法: 为了可靠地打开指定的文件 常用下列方法: if ((fp=fopen(“file1” , “ r ”))==NULL) { printf(“cannot open this file\n”); exit(0); } 2. 文件关闭函数 fclose 使用完一个文件后必须关闭它, 使用完一个文件后必须关闭它,以防数据丢失和被 其它操作误用。 其它操作误用。 fclose函数的调用格式: 函数的调用格式: 函数的调用格式 fclose(文件指针 文件指针); 文件指针 关闭文件时的操作就是使指针与文件“脱钩” 关闭文件时的操作就是使指针与文件“脱钩”。正常 关闭时fclose函数返回 值,关闭有误时返回非0值。 函数返回0值 关闭有误时返回非 值 关闭时 函数返回
9.4 文件的读写
1. fgetc 函数 fgetc 函数的功能是从以读或读写方式打开的文件 中读入一个字符。调用格式: 中读入一个字符。调用格式: ch=fgetc(fp); ch 为字符型变量;fp为指向文件的文件类型指针。 为字符型变量; 为指向文件的文件类型指针 为指向文件的文件类型指针。 2. fputc 函数 fputc函数的功能是将一个字符写入以写方式打开的 函数的功能是将一个字符写入以写方式打开的 磁盘文件。 调用格式: 磁盘文件。 调用格式: fputc(ch, fp); ch是要输出的字符;fp为指向文件的文件类型指针。 是要输出的字符; 为指向文件的文件类型指针 为指向文件的文件类型指针。 是要输出的字符 EOF为标准文件的结束标志。在流式文件中,文件 为标准文件的结束标志。 为标准文件的结束标志 在流式文件中, 结束标志为feof。当fp指向的文件遇到文件结束标志时 指向的文件遇到文件结束标志时, 结束标志为 。 指向的文件遇到文件结束标志时 feof(fp)=1,否则为 。 ,否则为0。