C语言之文件操作
来源:互联网 发布:json的datatype 编辑:程序博客网 时间:2024/05/18 03:44
freopen函数的使用
使用的理由(范围):如果输入数据很庞大,需要一次又一次的重新输入和调试时可采用本函数
格式的介绍: FILE * freopen ( const char * filename, const char * mode, FILE * stream );
参数的说明:
filename: 要打开的文件名mode: 文件打开的模式,和fopen中的模式(r/w)相同stream: 文件指针,通常使用标准流文件(stdin/stdout/stderr)
返回值:成功,则返回一个path所指定文件的指针,失败,返回NULL(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中,标准流文件具体是指stdin,stdout和stderr,其中stdin是标准输入流,默认为键盘,stdout是标准输出流,认为屏幕,stderr是标准错误流,一般把屏幕设为默认,通过调用freopen,就可以修改标准流文件的默认值,实现重定向
举例使用(一):
#include <stdio.h>int main(){ /* redirect standard output to a file */ if (freopen("D:\\OUTPUT.txt", "w", stdout)==NULL){ fprintf(stderr, "error redirecting stdout\n"); //fprintf()函数中格式化的规定与printf()函数相同,所不同的只是fprintf()函数是向文件中写入,而printf()是向屏幕输出 } printf("This will go into a file.");//this output will Go to a file fclose(stdout);//close the standard output stream return 0;}
举例使用(二):
#include <stdio.h>#define LOCAL#define NIF 1000000000int main(){ #ifdef LOCAL freopen("in_data.txt","r",stdin); freopen("out_data.txt","w",stdout); #endif int x,n = 0,min = NIF,max = -NIF,s=0; while(scanf("%d",&x) == 1){ s+= x; if(x < min) min = x; if(x > max) max = x; //printf("x = %d ,min = %d ,max = %d \n",x,min,max); n++; } printf("%d %d %0.3f\n",min,max,(double)s/n); return 0;}//注意:重定向部分被写在了#ifdef和#endif中,其含义是:只有定义了符号LOCAL才编译两条freopen语句
首先在相对路径中建立in_data.txt,
然后再里面输入数据,相当于你在输入流中输入输出,只不过他是重定向到in_data.txt
文件了,然后输出结果时,他又重定向到文件out_data.txt文件中
应用:在acm竞赛中,常常需要输入大量的输出,而我们如果每次在控制端输入的话,会花费大量的时间,而如果我们将其放入到文件中,我们就可以保存下来,然后进行测量大量的数据,而不用话费大量的时间
fopen函数的使用
fopen函数用于打开文件,其调用格式为:
FILE *fopen(char *filename, *type);1.fopen()函数中第一个形式参数表示文件名,可以包含路径和文件名两部分2.第二个形式参数表示打开文件的类型:"r":打开文字文件只读"w":创建文字文件只写"a":增补, 如果文件不存在则创建一个"r+":打开一个文字文件读/写"w+":创建一个文字文件读/写"a+":打开或创建一个文件增补"b":二进制文件(可以和上面每一项合用)"t":文这文件(默认项)
举例使用(一):
#include <stdio.h>#define NIF 1000000000int main(){ FILE *fin,*fout; fin = fopen("in1_data.txt","rb"); fout = fopen("out1_data.txt","wb"); int x,n = 0,min = NIF,max = -NIF,s=0; while(fscanf(fin,"%d",&x) == 1){ s+= x; if(x < min) min = x; if(x > max) max = x; // printf("x = %d ,min = %d ,max = %d \n",x,min,max); n++; } fprintf(fout,"%d %d %0.3f\n",min,max,(double)s/n); fclose(fin); fclose(fout); return 0;}
若想把fopen 版的程序改写成读写标准输入输出,只需输入 fin = stdin,fout = stdout即可,不需要调用fopen和fclose
0 0
- C语言之文件操作
- C语言之文件操作
- C语言之文件操作
- C语言之文件操作
- c语言之文件操作
- C语言之文件操作
- c语言入门教程之 文件操作基本常识
- C语言文件操作之fgets()
- C语言修行之文件操作
- c语言之文件操作练习
- C语言复习之文件的操作
- C语言标准库之文件操作
- ----------------Linux下C语言之文件操作-----------------
- C语言文件操作之fgets()
- C语言文件操作之EOF解析
- C/C++语言文件操作之fgets
- 重温C语言之--文件操作
- C语言文件操作之fgets()
- ConcurrentHashMap
- 创建一个root无法删除的文件
- 练习
- C语言中字符串与字符数组的使用
- CRC
- C语言之文件操作
- Ionic框架核心技术—Cordova
- 清理win7系统盘空间
- Protocol Buffers(protobuf)在Java开发中使用
- 字符串查找算法总结(暴力匹配、KMP 算法、Boyer-Moore 算法和 Sunday 算法)
- 60条有名的原则与定理
- redis模糊删除
- Ubuntu 16 安装ssh
- 动态规划--九度.1452.搬教室