FILE *fp:
其中的FILE應該大寫,它實際上是系統定義的一個結構,在stdio.h文件中。該結構中有文件名,文件狀態,文件當前的讀寫信息等。
fp是指向FILE結構的指針變量,通過fp可以找到某個文件的信息結構體,然後找到該文件,對文件實施操作。
FILE *fp=fopen("文件路徑及名稱","打開方式"),該函數執行失敗返回NULL
打開方式:r:打開一個文本文件只讀,前提是文件必須存在
w:打開一個文本文件只寫,若文件不存在則創建該文件
a:對一個文本文件添加
rb:打開一個二進制文件只讀,前提是文件必須存在
wb:打開一個二進制文件只寫,若文件不存在則創建該文件
ab:對一個二進制文件添加
r+:打開一個文本文件讀/寫
w+:生成一個文本文件讀/寫
a+:打開一個文本文件讀/寫
rb+:打開二進制文件讀/寫
wb+:生成二進制文件讀/寫
ab+:打開二進制文件讀/寫
char ch=fgetc(fp):
從文件中讀取一個字符,如果到達文件末尾或者發生錯誤則返回EOF
fputc(ch,fp);
將字符ch寫入文件中,函數執行失敗返回EOF
fgets(char buffer,int size,FILE *fp)
從文件中讀取一串字符到數組buffer中。當遇到換行符時把換行符保留在數組中,讀入不再進行,數組以'\0'結尾
fputs(char buffer,FILE *fp);
將字符串寫入文件中,函數的返回值是實際寫入文件的字符個數,失敗返回EOF
#include <stdio.h>
void rewind(FILE *fp);把文件流寫入位置移至文件開頭
#include <stdio.h>
int fseek(FILE *fp,long offset,int whence);
函數功能:把fp的文件讀寫位置指針移到指定的位置.
SEEK_SET:以距離文件開頭offset的位置為新的讀寫位置
SEEK_CUR:以目前的讀寫位置往後增加offset個位移量
SEEK_END:將讀寫位置指向文件尾後再增加offset個位移量
函數執行成功返回0,失敗返回-1;
#include <stdio.h>
long ftell(FILE *fp);用來取得文件流目前的讀寫位置其返回值是當前讀寫位置偏離文件頭部的字節數.(默認包含'\0')
#include <stdio.h> int main() { FILE *fp; char filename[80]; long length; printf("Input the file name:"); gets(filename); fp=fopen(filename,"rb"); if(fp==NULL) printf("file not found!/n"); else { fseek(fp,0,SEEK_END); length=ftell(fp); printf("the file length %1d bytes\n",length); fclose(fp); } return 0; }
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
(1)buffer:是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。
(2)size:要讀寫的字節數;
(3)count:要進行讀寫多少個size字節的數據項;
(4)fp:文件型指針。
#include <stdio.h> int main() { FILE* pFile; float buffer[] = { 2.0 , 3.0 , 8.0 }; pFile = fopen("myfile.bin" , "wb"); // 打開文件寫操作 fwrite(buffer , 1 , sizeof(buffer) , pFile); // 把浮點數組寫到文件 myfile.bin fclose(pFile); // 關閉文件 float read[3]; pFile = fopen("myfile.bin" , "rb"); // 重新打開文件讀操作 fread(read , 1 , sizeof(read) , pFile); // 從文件中讀數據 printf("%f\t%f\t%f\n", read[0], read[1], read[2]); fclose(pFile); // 關閉文件 return 0; }
include <stdio.h>
int fflush(FILE *fp);
函數說明:fflush()會強迫將緩沖區內的數據寫回參數stream 指定的文件中. 如果參數stream 為NULL,fflush()會將所有打開的文件數據更新.
返回值:成功返回0, 失敗返回EOF, 錯誤代碼存於errno 中.