3.输入输出函数
凡用以下的输入输出函数,应该使用#include把stdio.h头文件包含到源程序文件中。
函数名 | 函数原型 | 功 能 | 返回值 | 包含文件 |
clearerr | void clearerr(FILE*fp); | 使fp所指文件的错误,标志和文件结束标志置0。 | 无 | |
close | int close (int fp): | 关闭文件。 | 关闭成功返回0, 不成功,返回一1。 | 非ANSI标准 |
creat | int creat ( char filename,int mode); | 以mode所指定的方式建立文件。 | 成功则返回正数,否则返回一1. | 非ANSI标准 |
eof | inteof (int fd); | 检查文件是否结束。 | 遇文件结束,返回1:否则返回0。 | 非ANSI标准 |
fclose | int fclose (FILE fp); | 关闭fp所指的文件,释放文件缓冲区。 | 有错则返回非0,否则返回0. | |
feof | int feof(FILE fp); | 检查文件是否结束。 | 遇文件结束符返回非零值,否则返回0。 | |
fgete | int fgetc (FILE* fp); | 从fp所指定的文件中取得下一个字符。 | 返回所得到的字符。若读人出错,返回EOF。 | |
fgets | char*fgets(char*buf, int n, FILE*fp); | 从fp指向的文件读取一个长度为(n-1)的字符串,存人起始地址为buf的空间。 | 返回地址 buf,若遇文件结束或出错,返回NULL. | |
fopen | FILE*fopen(char * filename,char* mode); | 以mode指定的方式打开名为filename 的文件。 | 成功,返回一个文件指针(文件信息区的起始地址),否则返回0. | |
fprintf | int fprintf(FILE *fp, char* format,args....); | 把args 的值以format指定的格式输出到fp所指定的文件中。 | 实际输出的字符数 | |
fputc | int fputc(char ch,FILE *fp); | 将字符 ch 输出到fp指向的文件中。 | 成功,则返回该字符:否则返回非0. | |
fputs | Int fputs ( char*str,FILE *fp); | 将str 指向的字符串输出到fp所指定的文件。 | 返回0.若出错返回非0。 | |
fread | int fread (char *pt,unsigned size,unsigned n,FILE* fp); | 从fp所指定的文件中读取长度为size的n个数据项,存到pt 所指向的内存区 | 返回所读的数据项个数,如遇文件结束或出错返回0. | |
fscanf | int fscanf (FILE* fp, char format, args,...); | 从fp指定的文件中按format给定的格式将输入数据送到args所指向的内存单元(args是指针)。 | 已输入的数据个数。 | |
fseek | int fseek(FILE*fp,long offset, int base); | 将fp所指向的文件的位置指针移到以 base所指出的位置为基准、以offset为位移量的位置。 | 返回当前位置,否则,返回-1。 | |
fell | long ftell(FILE*fp); | 返回fp所指向的文件中的读写位置 | 返回fp所指向的文件中的读写位置。 | |
fwrite | Int fwrite(char* ptr,unsigned size,unsigned n,FILE*fp); | 把 ptr所指向的n*size 个字节输出到fp所指向的文件中 | 写到fp文的数据项的个数。 | |
getc | int getc (FILE*fp); | 从fp所指向的文件中读入一个字符。 | 返回所读的字符,若文件结束或出错,返回EOF. | |
getchar | int getchar(void); | 从标准输入设备读取下一个字符 | 所读字符,若文件结束或出错,则返回-1. | |
getw | int getw (FILE*fp); | 从fp所指向的文件读取下一个字(整数)。 | 输入的整数,如文件结束或出错,返回-1. | 非ANSI标准函数 |
open | int open (char. filename. int mode); | 以mode 指出的方式打开已存在的名为filename的文件。 | 返回文件号(正数),如打开失败,返回-1. | 非ANSI标准函数 |
printf | Int printf (char*format,args,...); | 按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备。 | 输出字符的个数,若出错,返回负数。 | format可以是一个字符串,或字符数组的起始地址 |
putc | int putc ( int ch, FILE *fp); | 把一个字符ch 输出到fp所指的文件中。 | 输出的字符ch。若出错,返回EOF. | |
putchar | int putchar ( char ch); | 把字符ch输出到标准输出设备 | 输出的字符ch。若出错,返回EOF. | |
puts | int puts ( char* str); | 把 str指向的字符串输出到标准输出设备,将'\0’转换为回车换行。 | 返回换行符,若失败,返回EOF. | |
putw | int putw(int w,FILE*fp); | 将一个整数 w(即一个字)写到fp指向的文件中。 | 返回输出的整数。若出错,返回EOF。 | 非ANSI标准函数 |
read | int read (int fd, char* buf, unsigned count); | 从文件号fd所指示的文件中读 count 个字节到由buf指示的缓冲区中。 | 返回真正读入的字节个数。如遇文件结束返回0,出错返回-1。 | 非ANSI标准函数 |
rename | int rename (char*oldname,char*newname); | 把由 oldname所指的文件名,改为由newname所指的文件名。 | 成功返回0, 出错返回一1。 | |
rewind | void rewind (FILE*fp); | 将fp指示的文件中的位置指针置于文件开头位置,并清除文件结束标志和错误标志。 | 无 | |
scanf | Int scanf (char*format,args,...); | 从标准输入设备按format指向的格式字符串所规定的格式,输入数据给args所指向的单元。 | 读入并赋给args的数针。遇文件结束返回EOF,出错返回0. | args为指针. |
int write (int fd,char * buf, unsigned count); | 从 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 (unsigned n,unsigned size); | 分配n个数据项的内存连续空间,每个数据项的大小为size。 | 分配内存单元的起始地址。如不成功,返回0。 |
free | void free(void *p); | 释放p所指的内存区。 | 无 |
malloc | void * malloc ( unsigned size); | 分配 size 字节的存储区。 | 所分配的内存区起始地址,如内存不够,返回0。 |
realloc | void* realloc ( void *p,unsigned size ); | 将p所指出的已分配内存区的大小改为size.size可以比原来分配的空间大或小。 | 返回指向该内存区的指针。 |