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