正文 第50章 文件2(1 / 1)

1.寫字符串函數(fputs)

fputs函數的一般調用形式為:

fputs(字符串,fp);

其中,fp為待寫入文件的文件指針,字符串可以是字符串常量,也可以是指向字符串的指針或字符數組名。

fputs函數的功能是向指定的文件寫入一串字符。該函數對應於標準I/O函數puts,但兩者有區別。

寫入文件時將寫入字符串後的NULL字符丟掉(即NULL字符不寫到文件中去,而puts函數將把NULL字符換成換行字符輸出)。該函數的返回值是一個int類型的數據,當寫入成功時返值為0,不成功時返回非0值。

如fputs("China",fp);

2.讀字符串函數(fgets)

fgets函數調用的一般形式為:

fgets(字符串,n,fp);

如fgets(str,n,fp);

從fp指向的文件輸入n-1個字符,並把它們放到字符數組str中。如果在讀入n-1個字符結束之前遇到換行符或EOF,讀入即結束。字符串讀入後在最後加一個“\0”字符,fgets函數返回值為字符串的首地址。

該函數類似於標準I/O函數gets,兩者之間的區別在於gets遇到一個換行字符時將其轉換成NULL字符,而fgets函數不進行這種轉換,它把遇到的換行字符作為一普通字符來處理。輸入時,若遇到EOF、指定的字符個數已讀完或換行字符,fgets函數總是在讀入的字符串後自動加上一個NULL字符。

[例133]在已知test.txt文件中包含字符串“Cprogram”,利用fgets函數讀取該文本文件。

#include

#include

voidmain()

{FILE*fp;

charstr[50];

if((fp=fopen("d:\\test.txt","r"))==NULL)

{printf("cannotopenthe%s\n");

exit(1);

fgets(str,11,fp);

printf("\n%s",str);

fclose(fp);

此程序的功能是從文件讀取一行字符串,輸出到屏幕上。

下麵的兩個函數專門針對二進製數據塊進行操作。

1.數據塊的寫文件函數fwrite

fwrite函數的一般調用形式為:

fwrite(buffer,size,count,fp);

其中:

(1)buffer是一個指針,在fwrite函數中,它用來指出數據的輸出地址;

(2)size是指每次要寫的字節數;

(3)count是指要讀寫多少個size大小的數據項;

(4)fp是文件型指針。

注意:每次完成寫操作(fwrite)後必須關閉流(fclose)。

[例134]編寫程序,將數組中的數寫進文件test.txt中。

#include

voidmain()

{intx[5]={1,2,3,4,5},i;

FILE*fp;

fp=fopen("d:\\test.txt","wb");

for(i=0;i

voidmain()

{inty[5],i;

FILE*fp;

fp=fopen("d:\\test.txt","rb");

for(i=0;i