#include <stdio.h>
格式:
FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fildes, const char *mode); //将流与已存在的文件描述符fileds连接 FILE *freopen(const char *path, constchar *mode,FILE *stream);
2.参数说明
filename: 要打开的文件名
mode: 文件打开的模式,和fopen中的模式(r/w)相同
stream: 文件指针,通常使用标准流文件(stdin/stdout/stderr)
返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。通过调用freopen,就可以修改标准流文件的默认值,实现重定向。
注:freopen也可完成标准输入和标准输出重定向。
#include<stdio.h> #define TEST "say hello\n" int main(int argc,char **argv) { /*if(NULL== (freopen("testdup1","w", stdin))) { printf("error"); }将文件1中的全体数据写入文件2之中*/ if(NULL== (freopen("testdup2","w", stdout))) { printf("error"); } printf(TEST); return 0; }表头文件 #include<stdio.h>
fread 函数原型
size_t fread( void * ptr,size_t size,size_t nmemb,FILE * stream);
fwrite 函数原型
size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);
一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size: 要读写的字节数;
(3)count: 要进行读写多少个size字节的数据项;
(4)fp: 文件型指针。
用法:
(1)读或写一个二进制数组。例如:将一个浮点数组的第2~5个元素写至一个文件上。
float data[10];
if (fwrite(&data[2], sizeof(float), 4, fp) != 4) err_sys("fwrite error"); //其中,指定size为每个数组元素的长度,nobj为要写的元素数。
(2)读或写一个结构。例如:
struct{ short count; long total; char name[NAMESIZE]; }item; if (fwrite( &item, sizeof(item), 1, fp) != 1) err_sys("fwrite error"); //指定size为结构的长度,nobj为1(要写的对象数)。