C语言文件操作
在C语言中,文件操作常用的就两种
1. 重定向版
2. fopen版
其中重定向是直接修改程序读取数据的方式,fopen是直接打开文件,从而读取。
重定向
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
第一行代码的意思是修改读取数据的方式,将stdin(标准输入设备,可以理解为黑框框中你输入的数据)设置为从data.in文件中读取。r代表read。
第二行代码是修改写数据的方式,有stdout(标准输出设备,可以理解为黑框框中printf的东西)设置成输出到data.out文件中,w代表write。
当这两行代码执行之后,就要注意了,你再也没有办法从黑框框中输入数据和输出数据了,一切都在文件中了。
fopen
fopen和重定向就不同,重定向是直接修改原来读取数据的方式,而fopen仅仅是打开了一个文件,可以读取,也可以写入。并不影响你原来在黑框框中的输入输出。
File *fin, *fout;
int x;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
while(fscanf(fin,"%d",&x) == 1){
/**对x的操作**/
}
fprintf(fout, "%d", x);
fclose(fin);
fclose(fout);
最开始我们定义了两个文件流,fin和fout,用来存取从fopen中读取到的数据。
然后一直循环从data.in中读取,一直到没有数据可读,也就是fscanf返回的数据不是1为止
最后,我们再输出x到data.out文件中。
这里需要注意的是,fscanf、fprintf与scanf、printf的区别其实并不大,只是第一个参数是文件流而已。
最后请大家注意,当你使用了文件流,最后一定要记得把它关掉。