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;
關於檔案的輸入輸出,暫時總結這麼多,想繼續瞭解檔案相關知識可以百度更多檔案相關的知識,謝謝!