char str[]=\fp=fopen(\while (str[i]){ putc(str[i], fp); i++; } fclose(fp); return 0; }
例程说明:
(1)首先将字符串\存入字符串数组str中。
(2)以写的方式打开一个名为\文件,并利用函数putc将数组str中的内容输出到文件\中。 (3)关闭文件。
注意:该函数既可以向标准输出文件输出字符,又可以向用户自定义文件输出字符。而且,每当向文件输出一个字符时,文件指针就会自动向后移一个字节。
putchar:向标准输出文件上输出字符
函数原型:int putchar(char ch); 头文件:#include
函数功能:将字符串ch输出到标准输出文件stdout上。也就是说将字符串ch输出到显示器屏幕上。
返回值:返回输出的字符ch,若出错,则返回EOF。 例程如下应用putchar函数在屏幕上显示字符。
#include
char str[]=\int i=0;
while(str[i]){ putchar(str[i]); i++; } }
例程说明:
(1)首先将字符串\存入字符串数组str中。
(2)应用putchar函数,循环地将字符串输出到标准输出文件(终端屏幕)上。 注意:该函数与putc函数不同,它只能向标准输出文件,也就是终端屏幕上输出字符。而putc函数既可以向标准输出文件上输出字符,又可以向一般用户自定义文件上输出字符。
puts:将字符串输出到终端函数
函数原型:int puts(char *string); 头文件:#include
是否是标准函数:是
函数功能:将string指向的字符串输出到标准输出设备(stdout),并将'\\0'转换为回车换行符'\\n'。在C语言中,字符串以’\\0’结尾。该函数不仅可以将字符串输出到标准输出设备,而且要将字符串的结束标志转换为回车换行。
返回值:成功则返回换行符,若失败则返回EOF。 例程如下应用puts函数向终端输出字符串。
#include
char string[] = \puts(string); return 0; }
例程说明:
(1)首先,将字符串\存入以string为首地址的缓冲区。 (2)应用puts函数将该字符串显示在标准输出设备上。 注意:该函数将字符串的结尾标志'\\0'转换为回车换行符'\\n'。因此,程序运行的结果为:
This is a test!
remove:删除文件函数
函数原型:int remove(char *filename); 头文件:#include
函数功能:删除以filename为文件名的文件。该函数的参数为欲删除文件的文件名,如果是单纯的文件名,就表明删除当前文件夹下的文件,否则要写明文件的路径。
返回值:成功删除文件返回0,否则返回-1。 例程如下应用remove函数删除文件。
#include
if( remove( \
perror( \else
printf( \}
例程说明:
(1)首先要在当前文件夹下建立文件test.txt。 (2)再利用remove函数删除该文件。若删除成功,则在终端显示字符串\\\n\,否则显示字符串\。
注意:前面已经讲过perror函数是按照一定格式要求向终端输出错误信息,因此,若删除文件成功,程序运行的结果为:
Deleted test.txt
若删除失败,则程序运行的结果为:
Could not delete test.txt!!: No such file or directory
这里,利用perror函数显示的完整的错误信息包括:用户自定义字符串,冒号,系统报错信息,换行符。
rename:重命名文件函数
函数原型:int rename(char *oldname, char *newname); 头文件:#include
函数功能:把由oldname所指的文件名改为由newname所指的文件名。该函数有两个参数,oldname为旧的文件名,newname为欲改成的新文件名。应当注意,oldname所指的文件一定要存在,newname所指的文件一定不存在。应用该函数可将一个文件的旧文件名oldname改为新文件名newname,但不能改变文件的路径。 返回值:成功返回0,出错返回-1。
例程如下应用rename函数重命名文件。
#include
if( rename(\printf(\else
printf(\}
例程说明:
(1)首先,在当前文件夹下建立一个文件\。
(2)应用rename函数重命名该文件,将其改名为\。若重命名成功,在屏幕上显示\提示字符串;否则显示\提示字符串。
rewind:重置文件指针函数
函数原型:void rewind(FILE *stream); 头文件:#include
函数功能:将文件指针fp重新定位在文件开头,并清除文件的结束标志和错误标志。该函数与函数fseek功能类似,但不同的是,该函数可以清除文件的结束标志和错误标志,而函数fseek不能;另外,该函数不能像函数fseek一样返回一个值表明操作是否成功,因为该函数无返回值。
返回值:无。
例程如下应用函数rewind重定位文件指针。
#include
FILE *fp; int data1, data2; data1 = 1; data2 = 2;
if( (fp = fopen( \ {
fprintf( fp, \
printf( \ data1=0;
data2=0;
rewind( fp );
fscanf( fp, \
printf( \fclose( fp ); } }
例程说明:
(1)首先以写的方式打开一个名为\的文件。 (2)应用fprintf函数向该文件写入data1,data2两个整型数,其值分别为1,2。此时,文件指针fp已指向文件尾。
(3)在屏幕上显示这两个数。
(4)再将变量data1和data2置0。
(4)应用rewind函数重定位文件指针,将文件指针fp重新定位在文件开头。 (5)再应用fscanf函数向data1,data2两个变量中读入文件中的数字。 (6)在屏幕上显示这两个数。
注意:在应用fprintf函数向该文件写入data1,data2两个整型数后,文件指针fp会自动指向文件尾。只有再应用函数rewind、fseek才能将文件指针重新定位到文件开头,以便读取文件。本例中,将data1和data2置0的目的是为了说明应用fscanf函数向data1,data2两个变量中读入文件中的数字的结果是正确的。本程序的运行结果为:
The values written are: 1 and 2 The values read are: 1 and 2
scanf:格式化输入函数
函数原型:int scanf(char *format[,argument,...]); 头文件:#include
函数功能:从标准输入设备(键盘)按照format指定的格式字符串所规定的格式,将数据输入到argument所指定的内存单元。scanf函数与printf函数相对,前者是从标准输入设备输入数值,后者是从标准输出设备输出数值。
返回值:成功返回输入的字符个数,否则遇到结束符返回EOF,出错返回0。 例程如下应用scanf函数输入数据。
#include
printf(\scanf(\getchar();
printf(\scanf(\getchar();
printf(\
scanf(\getchar();
printf(\}
例程说明:
(1)应用scanf函数向预先声明的三个变量空间输入一个整型数、一个字符、一个浮点数。
(2)在屏幕上显示这三个值。
注意:scanf函数与fscanf函数类似,但只能从标准输入设备文件读取数值,而不能像fscanf函数一样从一般用户自定义文件中读取数值。scanf函数常用作程序设计中数据的输入函数。
setbuf、setvbuf:指定文件流的缓冲区函数
函数原型:void setbuf(FILE *fp, char *buf); void setvbuf(FILE *fp, char *buf, int type, unsigned size); 头文件:#include
函数功能: 这两个函数使得打开文件后,用户可以建立自己的文件缓冲区,而不必使用fopen函数打开文件时设定的默认缓冲区。
setbuf函数的定义中,参数buf指定的缓冲区大小由stdio.h中定义的宏BUFSIZE的值决定,缺省值default为512字节。而当buf为NULL时,setbuf函数将使文件I/O不带缓冲区。而对setvbuf函数,则由malloc函数来分配缓冲区。参数size指明了缓冲区的长度(必须大于0),而参数type则表明了缓冲的类型,其取值如下表:
setvbuf函数中参数type的取值含义
type 值 _IOFBF _IOLBF _IONBF 含义 文件全部缓冲,即缓冲区装满后,才能对文件读写 文件行缓冲,即缓冲区接收到一个换行符时,才能对文件读写 文件不缓冲,此时忽略buf,size的值,直接读写文件,不再经过文件缓冲区缓冲 返回值:无。 例程如下应用setbuf函数指定文件的缓冲区。
#include
char buf[BUFSIZ]; FILE *fp1, *fp2;
if( ((fp1 = fopen( \ ((fp2 = fopen( \ {
/* 应用setbuf函数给文件流fp1指定缓冲区buf */ setbuf( fp1, buf );
/*显示缓冲区地址*/
printf( \ /* 文件流fp2不指定缓冲区*/ setbuf( fp2, NULL );
/*信息提示不分配缓冲区*/