1. 程式人生 > >C、C++ 檔案的輸入輸出

C、C++ 檔案的輸入輸出

FILE :是一種檔案型別,也稱檔案指標

注意:以下程式均為在vs2013中的用法,針對其他編譯器,寫法略有不同,但對檔案的用法都一樣!

定義 : FILE *fp
fgetc(fp):從fp所指的檔案讀一個字元;
fputc(ch,fp):將ch字元寫到檔案指標變數fp所指的檔案中;
fopen_s(&fp,“yy.txt”,“w”):以寫的方式開啟名為yy.txt的資料檔案,並將返回值賦給指標變數fp;
( 此寫法針對vs2013,其他編譯環境下為:fp = fope(“yy.txt”,“w”) 含義相同;)

例項一:
fgetc()、fputc()、fopen_s()

#include<iostream>
using namespace std;
int main()
{
	FILE *fp=NULL;
	char ch;
	if (fopen_s(&fp,"yy.txt","w") == NULL)   //開啟輸出檔案
	{
		cout << "failed open the file";     //判斷開啟檔案是否出錯,出錯則輸出出錯資訊
		exit(0);
	}
	ch = getchar();
	while (ch != '#')     //當用戶輸入‘#’時停止輸入
	{
		fputc(ch,fp);
		ch =
getchar(); //接收最後輸入的回車符 } fclose(fp); //關閉所有檔案,如果不關閉檔案將會丟失資料 return 0; }

結果:執行此段程式碼時,若使用者輸入的資料為 Hello# ,對應根目錄下產生一個名為yy.txt的文字檔案,檔案包含內容為“ Hello ” ;

例項二:
fgets()、fputs()
fgets(str,n,fp):從fp所指向的檔案讀長度為n-1的字串存放到str中
fputs(str,fp):將str所指的字串寫到fp所指的檔案中
以下題目:
將一個字串存放在指定的檔案中,通過檔案將內容列印在螢幕上;

#include
<iostream>
using namespace std; int main() { FILE *fp=NULL; char str[10]; gets(str); //得到一個大小為10的字串 if (fopen_s(&fp,"str.txt","w") == NULL) //此時為w { cout << "failed open the file!"; exit(0); } fputs(str,fp); fclose(fp); //將以w方式開啟的檔案關閉 if (fopen_s(&fp,"str.txt","r") == NULL) // 注意 此時為 r 讀 { cout << "failed open the file"; exit(0); } fgets(str,10,fp); cout<<str<<endl; fclose(fp); return 0; }

例項三:
fread(buffer,size,count,fp)、fwrite(buffer,size,count,fp);
fread(&curscore,sizeof(int),1,fp):從fp所指的檔案讀入1個位元組大小問4(sizeof( int ))的資料存放curscore地址中
fwrite(score,sizeof(int),5,fp):將score陣列中每組資料位元組大小為4(sizeof( int ))的5個數據寫到fp所指向的檔案中;

以下題目:
從鍵盤輸入5個數據,存放在指定檔案中,通過檔案將此組資料列印到螢幕上;

#include<iostream>
using namespace std;
int main()
{
	int score[5];
	FILE *fp=NULL;
	cout << "input data:" << endl;
	for (int i = 0; i < 5; i++)
	{
		cin >> score[i];
	}
	fopen_s(&fp,"score.txt","wb");
	if (!fp)
	{
		cout << "error!" << endl;
	}
	fwrite(score,sizeof(int),5,fp);  
	fclose(fp);
	fopen_s(&fp, "score.txt", "rb");
	int curscore;      //建一個與資料型別相同的臨時變數
	while (!feof(fp))   //feof(fp) 檔案末尾   判斷是否位於檔案末尾,是停止迴圈
	{
		fread(&curscore,sizeof(int),1,fp);
		cout << curscore << "\t";
	}
	putchar(10);
	fclose(fp);
	return 0;
}

結果:
當我們輸入一組資料時 例如:5 2 3 4 1 ,回車之後螢幕上會出現 5 2 3 4 1;

關於檔案的輸入輸出,暫時總結這麼多,想繼續瞭解檔案相關知識可以百度更多檔案相關的知識,謝謝!