C语言读取文件输入输出
在编程很多时候,我们需要对数据进行操作。如何快速高效的将数据输入到计算机并进行运用这些数据,是加快代码开发的一个重要的手段。今天我根据别人的文章写了一小段代码,由于好久已经没有运用C语言了,很多知识都有些生疏了,在使用命令的时候需要到网上进行现查,然而网上的知识浩海如烟,为了找我需要的代码竟然好了将近一个小时,这个效率太低了。因此,在这里对我所查到的东西进行总结。
C语言重定向技术是通过改变输入计算机缓存模式的一种技术,一般C语言读取的是直接从键盘进行输入的数据,
而重定向技术,可以输入到计算机缓存的数据变为读取文本文件的数据;另外,通常程序的输出为计算机屏幕,重定向技术可以将文本输出到指定的文件中去。通俗的讲就是直接读取文件中的数据作为输入,而将写入文件作为输出。
我们通过重定向技术直接操作文件中的数据来代替用键盘输入和向屏幕输出,这样就大大提高了开发的效率。
在C语言的标准库(stdio.h)中有一个freopen函数,是用于重定向输入和输出流的。其函数的原型为:
FILE *freopen(const char *filename,const char*mode,FILE *stream);
参数说明:
filename 需要重定向到的文件名(可以是绝对地址或者是相对地址);
mode 访问文件的权限,包括读(“r”)、写(“w”)、追加(“a”);
stream 代表被重定向以后的流,包括输入流(stdin)、输出流(stdout);
返回值 如果重定向文件成功,则返回该文件的文件指针;否则,返回值为NULL。
例程:
#include <stdio.h>
int main(int argc, char * argv[]){
FILE * file;
if((file=freopen("data.txt","r",stdin))==NULL){ //重定向文件的输入
printf("Not find file\n");
}
freopen("output.txt","w",stdout);
int a;
while(scanf("%d",&a) != EOF){ //从"data.txt"文件中读取数据
printf("%d",a); //将数据写入到"output.txt"文件中
}
return 0;
}