一.fopen函數:
成都創新互聯"三網合一"的企業建站思路。企業可建設擁有電腦版、微信版、手機版的企業網站。實現跨屏營銷,產品發布一步更新,電腦網絡+移動網絡一網打盡,滿足企業的營銷需求!成都創新互聯具備承接各種類型的網站建設、成都做網站項目的能力。經過10年的努力的開拓,為不同行業的企事業單位提供了優質的服務,并獲得了客戶的一致好評。
函數原型:FILE* fopen(const char * path, const char* mode)
path參數 :表示一個文件名,可以包含路徑和文件名。如:“test.txt” 或"C:\\homework\\test.txt" 注意有兩個\\,因為其中一個 ’\‘ 代表轉義字符。
mode參數: man fopen文本中的內容:
r Open text file for reading. The stream is positioned at the
beginning of the file.
r+ Open for reading and writing. The stream is positioned at the
beginning of the file.
w Truncate file to zero length or create text file for writing.
The stream is positioned at the beginning of the file.
w+ Open for reading and writing. The file is created if it does
not exist, otherwise it is truncated. The stream is positioned
at the beginning of the file.
a Open for appending (writing at end of file). The file is cre‐
ated if it does not exist. The stream is positioned at the end
of the file.
a+ Open for reading and appending (writing at end of file). The
file is created if it does not exist. The initial file position
for reading is at the beginning of the file, but output is
always appended to the end of the file.
注意:后三個為The file is created if it does not exist, otherwise it is truncated
對文件的使用方式有如下6種:
文件使用方式由r,w,a,t,b,+六個字符拼成,各字符的含義是: r(read): 讀 w(write): 寫 a(append): 追加 t(text): 文本文件,可省略不寫 b(banary): 二進制文件 +: 讀和寫
返回值:如果成功,則返回一個文件指針,如果失敗,則返回NULL。
二.fread函數:size_t fread(void* buf, size_t size, size_t nmemb, FILE* stream)
fwrite函數:size_t fwrite(const void* buf, size_t size, size_t nmemb, FILE* stream)
buf參數:數據緩沖的地址,注意為void類型。
size參數: 因為buf為void類型,所以要指明每個數據項的大小。注意兩個函數都是以數據項來讀寫的,一次讀或寫一個數據項,而不是字節。數據項可以是char,int,結構體等等。
nmemb參數:為希望讀/寫的數據項個數。注意,實際讀/寫操作不一定會讀/寫count各數據項。
stream參數:一個文件指針。
返回值:man fread文本內容如下:
RETURN VALUE
On success, fread() and fwrite() return the number of items read or
written. This number equals the number of bytes transferred only when
size is 1. If an error occurs, or the end of the file is reached, the
return value is a short item count (or zero).
fread() does not distinguish between end-of-file and error, and callers
must use feof(3) and ferror(3) to determine which occurred.
文本總結:返回值都是實際讀/寫操作的數據項數,發生錯誤或者讀到文件末尾并不是返回-1,也是一個讀/寫的數據項數或者0。如果要判斷是發生錯誤還是到文件結尾,可以調用feof(3)和ferror(3)。
三.fclose函數:int fclose(FILE* fp)
關閉一個文件
返回值:返回值 若關文件動作成功則返回0,有錯誤發生時則返回EOF并把錯誤代碼存到errno。
相關代碼:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/types.h>
#include<string.h>
const int BUF_SIZE = 1024;
int main()
{
FILE* stream;
FILE* wstream;
char buf[BUF_SIZE];
stream = popen("ls -l","r");
wstream = fopen("test_popen.txt","w+");
memset(buf, '\0', sizeof(buf));
fread(buf, sizeof(char), sizeof(buf), stream);//把返回標準I/O流內的內容讀到buf中
fwrite(buf,sizeof(char), strlen(buf), wstream);
fclose(wstream);//一定要記得關閉
pclose(stream);//只能用pclose不能用fclose
return 0;
}
四.fgets函數:char* fgets(char* buf, size_t size, FILE* stream) ('\n' , '\0')
功能:從文件中讀取一行,送到buf中。
fgets參數:,參數s是緩沖區的首地址,size是緩沖區的長度,該函數從stream所指的文件中讀取以'\n'結尾的一行(包括'\n'在內)存到緩沖區s中,并且在該行末尾添加一個'\0'組成完整的字符串
返回值: 如果成功,buf指向哪返回值就指向哪,出差或讀到文件尾時返回NULL。
注意:1.因為該函數會在行末尾加 ‘\0’ ,所以它最多只能讀size-1個字符。
2.因為該函數是讀取一行,它的返回條件是讀到 ‘\n’ ,它看待 '\0 '是一個普通的字符。
3.它不能讀二進制文件。
五.fputs函數: int fputs(const char * buf, FILE* stream) (沒有'\0')
功能:把buf中保存的字符串寫到文件中。
返回值:成功返回讀入字符串數,出差返回EOF
注意:緩沖區s中保存的是以'\0'結尾的字符串,fputs將該字符串寫入文件 stream,但并不寫入結尾的'\0'。與fgets不同的是,fputs并不關心的字符串中的'\n'字符,
相關代碼:
1 #include<stdio.h> 2 3 int main() 4 { 5 char *buf = "i want to have a star\n"; 6 FILE* fp = fopen("./test.txt","w+"); 7 fputs(buf,fp); 8 return 0; 9 }
六.fprintf函數:int fprintf(FILE* stream ,const char *format, . . .)
功能:傳送格式化輸出到一個文件
format 格式化輸入函數,和printf里的格式一樣
返回值:成功時返回轉換的字節數,失敗時返回一個負數
fp = fopen("./test.c","w+");
fprintf(fp,"%s\n",str);
七.fscnaf函數: int fscanf(FILE* stream, const char* format, . . .)
功能:從一個流中執行格式化輸入
format 格式化輸出函數,和scanf里的格式一樣
返回值:成功時返回轉換的字節數,失敗時返回一個負數
fp = fopen("/local/test.c","a+");
fscanf(fp,"%s",str);
八.fgetc函數:int fgetc(FILE* stream)
函數說明: fgetc()從參數stream所指的文件中讀取一個字符。若讀到文件尾而無數據時便返回EOF。
返回值: getc()會返回讀取到的字符,若返回EOF則表示到了文件尾。
#include<stdio.h> main() { FILE *fp; int c; fp=fopen(“./test.txt”,”w+”); while((c=fgetc(fp))!=EOF) printf(“%c”,c); fclose(fp); }
九.fputc函數:int fputc(int c, FILE* stream)
函數說明 :fputc 會將參數c 轉為unsigned char 后寫入參數stream 指定的文件中。
返回值 :fputc()會返回寫入成功的字符,即參數c。若返回EOF則代表寫入失敗。
#include<stdio.h> main() { FILE * fp; char a[26]=”abcdefghijklmnopqrstuvwxyz”; int i; fp= fopen(“./test.txt”,”w”); for(i=0;i<26;i++) fputc(a,fp); fclose(fp); }
十.flush函數:int fflush(FILE* stream)
函數說明 :fflush()會強迫將緩沖區內的數據寫回參數stream指定的文件中。如果參數stream為NULL,fflush()會將所有打開的文件數據更新。
返回值 成功返回0,失敗返回EOF,錯誤代碼存于errno中。
新聞標題:與文件操作相關的函數
網站網址:http://m.newbst.com/article16/gsscdg.html
成都網站建設公司_創新互聯,為您提供商城網站、服務器托管、動態網站、品牌網站制作、自適應網站、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯