首页 理论教育C语言程序设计:格式化数据的读写

C语言程序设计:格式化数据的读写

【摘要】:在文件in.txt中有两个用逗号分开的整数,请编写程序求出这两个整数之间的所有素数,并将求出的素数依次写到文件out.txt中。②写入文件out.txt中的数据用空格分隔。在需要按某种格式处理文件数据的程序中,特别要注意正确书写格式控制字符串中的输入输出控制格式,请读者参照程序中注释进行分析理解。

为了满足在文件操作中处理格式化数据的需求,C标准函数库提供了fscanf和fprintf两个函数,它们的原型如下:

int fscanf(FILE*stream,const char*format[,address,...]);

int fprintf(FILE*stream,const char*format[,argument,...]);

从两个函数的原型可以看出,函数fscanf与格式化输入函数scanf的功能基本相同,不同的是scanf函数的数据来源于标准输入设备(键盘),而fscanf函数的数据来源于与stream相关联的文件;函数fprintf与格式化输出函数printf的功能基本相同,不同的是printf函数输出数据的目的地是标准输出设备(显示器),而fprintf函数输出数据的目的地是由stream指定的文件。

【例7.7】 编写程序实现功能:随机产生100个具有3位整数、2位小数的双精度实数,将它们依次写入指定文件中,两个数据之间用空格分隔,文件名在程序运行时从键盘提供。

程序运行时,通过100次循环处理,每次用表达式100+rand()%900+rand()%100*1e-2;产生一个具有3位整数、2位小数的随机实数,然后用格式化写入函数将其写入文件中。

【例7.8】 编写程序实现功能:读出例5.7创建的文件数据中所有数据,然后将它们按降序排序后输出。(www.chuimin.cn)

上面的程序代码中,首先按照指定文件中数据的类型和个数定义了一个长度为100的双精度实型数组,通过循环控制将文件中的数据依次读入到数组中,然后依次调用排序函数sort和输出函数printarray实现题目所要求的功能。

【例7.9】 在文件in.txt中有两个用逗号分开的整数,请编写程序求出这两个整数之间的所有素数,并将求出的素数依次写到文件out.txt中。程序设计要求:

①判断素数的功能使用独立的函数实现。

②写入文件out.txt中的数据用空格分隔。

在需要按某种格式处理文件数据的程序中,特别要注意正确书写格式控制字符串中的输入输出控制格式,请读者参照程序中注释进行分析理解。