str1=str2,返回0;
str1>str2,返回正数
string.h
strcpy
intstrcpy(char*str1,char*str2);
把str2指向的字符串复制到str1中去
返回str1
string.h
strlen
unsignedintstrlen(char*str);
统计字符串str中字符的个数(不包括终止符'\0')
返回字符个数
string.h
strstr
intstrstr(char*str1,char*str2);
找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)
返回该位置的指针,如找不到,返回空指针
string.h
tolower
inttolower(intch);
将ch字符转换为小写字母
返回ch所代表的字符的小写字母
ctype.h
toupper
inttoupper(intch);
将ch字符转换成大写字母
与ch相应的大写字母
ctype.h
3.输入输出函数
凡用以下的输入输出函数,应该使用#include把stdio.h头文件包含到源程序文件中。
函数名
函数原型
功能
返回值
说明
clearerr
voidclearerr(FILE*fp);
使fp所指文件的错误,标志和文件结束标志置0
无
close
intclose(intfp);
关闭文件
关闭成功返回0;否则返回-1
非ANSI标准
creat
intcreat(char*filen-ame,intmode);
以mode所指定的方式建立文件
成功则返回正数;否则返回-1
非ANSI标准
eof
Inteof(intfd);
检查文件是否结束
遇文件结束,返回1;否则返回0
非ANSI标准
fclose
intfclose(FILE*fp);
关闭fp所指的文件,释放文件缓冲区
有错则返回非0;否则返回0
feof
intfeof(FILE*fp);
检查文件是否结束
遇文件结束符返回非零值;否则返回0
fgetc
intfgetc(FILE*fp);
从fp所指定的文件中取得下一个字符
返回所得到的字符,若读入出错,返回EOF
fgets
char*fgets(char*bu-f,intn,FILE*fp);
从fp指向的文件读取一个长度为(n-1)的字符串,存入起始地址为buf的空间
返回地址buf,若遇文件结束或出错,返回NULL
fopen
FILE*fopen(char*f-ormat,args,...);
以mode指定的方式打开名为filename的文件
成功,返回一个文件指针(文件信息区的起始地址);否则返回0
fprintf
intfprintf(FILE*fp,char*format,args,...);
把args的值以format指定的格式输出到fp所指定的文件中
实际输出的字符数
fputc
intfputc(charch,FILE*fp);
将字符ch输出到fp指向的文件中
成功,则返回该字符;否则返回非0
fputs
intfputs(char*str,FILE*fp);
将str指向的字符串输出到fp所指定的文件
成功返回0;若出错返回非0
fread
intfread(char*pt,unsignedsize,unsigne-dn,FILE*fp);
从fp所指定的文件中读取长度为size的n个数据项,存到pt所指向的内存区
返回所读的数据项个数,如遇文件结束或出错返回0
fscanf
intfscanf(FILE*fp,charformat,args,...);
从fp指定的文件中按format给定的格式将输入数据送到args所指向的内存单元(args是指针)
已输入的数据个数
fseek
intfseek(FILE*fp,longoffset,intbase);
将fp所指向的文件的位置指针移到以base所给出的位置为基准、以offset为位移量的位置
返回当前位置;否则,返回-1
ftell
longftell(FILE*fp);
返回fp所指向的文件中的读写位置
返回fp所指向的文件中的读写位置
fwrite
intfwrite(char*ptr,unsignedsize,unsigne-dn,FILE*fp);
把ptr所指向的n*size个字节输出到fp所指向的文件中
写到fp文件中的数据项的个数
getc
intgetc(FILE*fp);
从fp所指向的文件中读入一个字符
返回所读的字符,若文件结束或出错,返回EOF
getchar
intgetchar(void);
从标准输入设备读取下一个字符
所读字符。
若文件结束或出错,则返回-1
getw
intgetw(FILE*fp);
从fp所指向的文件读取下一个字(整数)
输入的整数。
如文件结束或出错,返回-1
非ANSI标准函数
open
intopen(char*filena-me,intmode);
以mode指出的方式打开已存在的名为filename的文件
返回文件号(正数);如打开失败,返回-1
非ANSI标准函数
printf
intprintf(char*form-at,args,...);
按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备
输出字符的个数,若出错,返回负数
format可以是一个字符串,或字符数组的其实地址
putc
intputc(intch,FILE*fp);
把一个字符ch输出到fp所指的文件中
输出的字符ch,若出错,返回EOF
putchar
intputchar(charch);
把字符ch输出到标准输出设备
输出的字符ch,若出错,返回EOF
puts
intputs(char*str);
把str指向的字符串输出到标准输出设备,将'\0'转换为回车换行
返回换行符,若失败,返回EOF
putw
intputw(intw,FILE*fp);
将一个整数w(即一个字)写到fp指向的文件中
返回输出的整数,若出错,返回EOF
非ANSI标准函数
read
intread(intfd,char*buf,unsignedcount);
从文件号fd所指示的文件中读count个字节到由buf指示的缓冲区中
返回正真读入的字节个数,如遇文件结束返回0,出错返回-1
非ANSI标准函数
rename
intrename(char*old-name,char*newnam-e);
把由oldname所指的文件名,改为由newname所指的文件名
成功返回0;出错返回-1
rewind
voidrewind(FILE*fp);
将fp指示的文件中的位置指针置于文件开头位置,并清除文件结束标志和错误标志
无
scanf
intscanf(char*forma-t,args,...);
从标准输入设备按for-mat指向的格式字符串所规定的格式,输入数据给args所指向的单元
读入并赋给args的数据个数,遇文件结束返回EOF,出错返回0
args为指针
write
intwrite(intfd,char*buf,unsignedcount);
从buf指示的缓冲区输出count个字符到fd所标志的文件中
返回实际输出的字节数,如出错返回-1
非ANSI标准函数
4.动态存储分配函数
ANSI标准建议设4个有关的动态存储分配的函数,即calloc()、malloc()、free()、realloc()。
实际上,许多C编译系统实现时,往往增加了一些其他函数。
ANSI标准建议在“stdlib.h”头文件中包含有关的信息,但许多C编译系统要求用“malloc.h”而不是“stdlib.h”。
读者在使用时应查阅有关手册。
ANSI标准要求动态分配系统返回void指针。
void指针具有一般性,它们可以指向任何类型的数据。
但目前有的C编译所提供的这类函数返回char指针。
无论以上两种情况的哪一种,都需要用强制类型转换的方法把void或char指针转换成所需的类型。
函数名
函数原型
功能
返回值
calloc
void*calloc(unsignedn,unsignsize);
分配n个数据项的内存连续空间,每个数据项的大小为size
分配内存单元的起始地址,如不成功,返回0
free
voidfree(void*p);
释放p所指的内存区
无
malloc
void*malloc(unsignedsize);
分配size字节的存储区
所分配的内存区起始地址,如内存不够,返回0
realloc
void*realloc(void*p,