一、问题
fscanf( ) 函数、fprintf( ) 函数与 printf( ) 函数、scanf( ) 函数的作⽤相似,都是格式化读写函 数,那么这两个读写函数有什么不同呢?
二、解答
两者的区别就在于前⾯的字符“f”,即 fscanfQ函数和 fprintfD函数的读写对象是磁盘⽂件(file),⽽不是键盘和显示器。
scanf( ) 函数是通过键盘输⼊数据,使⽤ scanf( ) 函数读取键盘上的输⼊信息:⽽ printf( ) 函数是将信息输出到终端设备,即显示器上。 fscanf( ) 函数是读取指定磁盘⽂件中数据信息;⽽ fprintf( ) 是向指定的磁盘⽂件中输出信息,显示在磁盘⽂件上。 通过下⾯的例⼦,理解这四个函数的功能。代码如下。
#include <stdio.h>
int main()
{FILE *fp;long ln;float f1;char str[128];char str1[128];fp = fopen("time.txt", "w+");fprintf(fp, "%s %ld %f", "Hello", 1100, 12.34);fseek(fp, 0L, SEEK_SET);fscanf(fp, "%s", str);fscanf(fp, "%ld", &ln);fscanf(fp, "%f", &f1);printf("%s\t%ld\t%f\n", str, ln, f1);fclose(fp);scanf("%s", str1);printf("%s\n", str1);
}
此函数的功能是创建并打开⼀个磁盘⽂件 time.txt。通过 fprintf( ) 函数向此磁盘⽂件中写⼊数据,有字符串形式的 hello,有⻓整型形式的 1100,有浮点型的 12.34。然后使⽤ fseek( ) 函数设置⽂件指示器的位置,通过 fscanf( ) 函数读取此字符串,分别读取这⼏种类型的数据,然后将这些数据输出到终端显示器上。为了在此程序中也能体现 scanf( ) 函数从键盘输⼊信息的功能,特意在程序的结尾处使⽤此函数读取信息,然后通过 printf( ) 函数再将此信息输出。
程序的运⾏结果如下所示。
Hello 1100 12.340000
congratulation
congratulation
写到⽂本⽂件中的内容如下所示。
三、总结
这四个格式化读写函数的应⽤都写到了上述程序中,fscanf( ) 函数和 fprintf( ) 函数每次只能读写⼀个结构的元素,因此在读取磁盘⽂件中数据时,使⽤了三个 fscanf( ) 语句,分别读取三种不同数据类型的数据信息。