搜索
熱搜: 活動 交友 discuz
查看: 2510|回復: 0
打印 上一主題 下一主題

[教學] C的檔案輸出

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-9-4 08:55:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
C++軟體本身提供了許多檔案的輸入與輸出,以方便讀者設計與檔案有關的系統函數。基本上,我們可以將這些函數分成兩大類。
1.
有緩衝區輸入與輸出(Buffered I/O)
當它在讀取檔案資料或將資料寫入檔案時,一定都先經過一個緩衝區。

2.
無緩衝區輸入與輸出(Unbuffered I/O)
所謂沒有緩衝區的輸入與輸出,表示輸入與輸出的動作是直接在磁碟內,執行讀取資料和寫入資料動作。

有緩衝區的輸入與輸出函數



函數名稱

功能說明

fopen( )
開啟一個檔案
fclose( )
關閉一個檔案
putc( )
輸出一個字元到檔案
getc( )
從某一個檔案讀取一個字元
fprintf( )
輸出資料至某檔案
fscanf( )
從某檔案讀取資料
feof( )
測試是否到了檔案結束位置
ferror( )
測試檔案操作是否正常
fseek( )
設定準備讀取檔案資料的位置
rewind( )
將準備讀取檔案資料位置,設定在檔案起始位置
remove( )
檔案的刪除


fopen( ) 用於開啟檔案,檔案在使用前是需先經過開啟動作的


使用格式如下:

FILE
*fopen(char
*filename, char
*mode);


各項資料的定義如下所示:

1.
*filename:檔案指標,指的是欲開啟的檔案名稱。
2.
*mode:檔案使用模式,指的是檔案被開啟之後,它的使用方式。

下面是檔案開啟之後,一般常使用的方式:

"r"

開啟一個文字檔(text),供程式讀取。

"w"

開啟一個文字檔(text),供程式將資料寫入此檔案內。如果磁碟內不包含這個檔案,則系統會自行建立這個檔案。如果磁碟內包含這個檔案,則此檔案內容會被蓋過而消失。

"a"

開啟一個文字檔(text),供程式將資料寫入此檔案的末端。如果此檔案不存在,則系統會自行建立此檔案。

"rb"

開啟一個二元檔(binary),供程式讀取。

"wb"

開啟一個二元檔,供程式將資料寫入此檔案內。如果磁碟內不包含這個檔案,則系統會自行建立這個檔案。如果磁碟內包含這個檔案,此檔案內容會被蓋過而消失。

"ab"

開啟一個二元檔(binary),供程式將資料寫入此檔案末端,如果此檔案不存在,則系統會自行建立此檔案。



fclose( )
用於關閉檔案,如果fclose( )執行失敗,它的傳回值是非零值




C語言中關閉檔案主要有兩個目的:
1.
檔案在關閉前會將檔案緩衝區資料寫入磁碟檔案內,否則檔案緩衝區資料會遺失。
2.
一個C語言程式,在同一時間可開啟的檔案數量有限,一般是20個,如果你的程式很大,要開啟超過20個檔案時,你必須將暫時不用的檔案關閉。

fprintf( )
主要目的是供你將資料,以格式化方式寫入某檔案內


使用格式如下:

fprintf( fp ,
"……." , ………);


此函數控制列印區和列印和列印變數區的使用,格式和printf( )使用格式相同. fprintf( )printf( )兩者唯一的差別是,printf( )會將資料列印在螢幕上,而fprintf( )會將資料列印在某個檔案內。


#include <stdio.h>

void main()
{

FILE *fp;


int
var,i;


int
sum = 0;


float average;


fp = fopen("data1.txt","w");
/* open file pointer */



for ( i = 0; i < 5; i++ )

{


printf("\1: input number %d here ==>
",i+1);


scanf("%d",&var);


sum += var;


fprintf(fp,"%d\n",var);


}


average = (float) sum / 5.0;


fprintf(fp,"\2: The average is %6.2f",average);


fclose(fp);

}



fscanf( ) 主要的目的是讓我們從某個檔案讀取資料


使用格式如下:

fscanf( fp ,
"……." , ………);



fscanf( )函數和scanf( )函數兩者之間最大的差別在,scanf( )函數主要用於從鍵盤輸入讀取資料,fscanf( )函數則是從fp檔案指標所指的檔案讀取資料。


#include <stdio.h>

void main()
{

FILE *fp;


int
i,j,var;


fp = fopen("data2.txt","r");
/* open file pointer */



for ( i = 0; i < 5; i++ )

{


for ( j = 0; j < 5; j++ )


{



fscanf(fp,"%d",&var);



printf("%c",var);


}


printf("\n");


}


fclose(fp);

}


putc( ) 主要功能是將一個字元寫入某檔案內


格式如下

int putc( int ch, FILE *fp );



此函數如果執行成功,它的傳回值是ch字元值,如果執行失敗,它的傳回值是EOF。且上述格式中,ch代表所欲輸出的字元,fp則是檔案指標。
下列為一個簡單建立一個檔案的程式應用。

1.
#include <stdio.h>
2.
void main()
3.
{
FILE *fp;

4.

char ch;

5.

fp = fopen("sample.txt","w");


/*
開啟一個文字檔(sample.txt),供程式將資料寫入此檔案內*/
6.

printf("\1: Please input text here. \n");

7.

while ( (ch = getche()) != '\r' )


putc(ch,fp); /*

將讀入之字元輸出所設定的sample.txt檔案內*/
8.

9.

fclose(fp);
/*
關閉指標為fp檔案 */
10.

}















getc( ) 主要目的是某一個檔案中,讀取一個字元。,


使用格式如下:

int
getc(FILE
*fp);



當執行getc( )函數成功時,傳回值是所讀取的字元,如果所讀取的是檔案結束字元,則此值是EOF,在stdio.h內,此值是 -1
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2026-6-4 12:29 , Processed in 0.030354 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表