#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(要写的对象数)。