APUE之标准I/O fopen,freopen,fread,fwrite实例。

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





你可能感兴趣的:(IO,unix,C语言,apue,freopen)