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(要寫的對象數)。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章