C檔案基本操作
(1)C中檔案的基本使用方式以及相關說明
檔案使用方式以及意義:
“rt”只讀開啟一個文字檔案,只允許讀資料
“wt”只寫開啟或建立一個文字檔案,只允許寫資料
“at”追加開啟一個文字檔案,並在檔案末尾寫資料
“rb只讀開啟一個二進位制檔案,只允許讀資料
“wb”只寫開啟或建立一個二進位制檔案,只允許寫資料
“ab”追加開啟一個二進位制檔案,並在檔案末尾寫資料
“rt+”讀寫開啟一個文字檔案,允許讀和寫
“wt+”讀寫開啟或建立一個文字檔案,允許讀寫
“at+”讀寫開啟一個文字檔案,允許讀,或在檔案末追加數 據
“rb+”讀寫開啟一個二進位制檔案,允許讀和寫
“wb+讀寫開啟或建立一個二進位制檔案,允許讀和寫
“ab+”讀寫開啟一個二進位制檔案,允許讀,或在檔案末追加資料
對於檔案使用方式有以下幾點說明:
1. 檔案使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文字檔案,可省略不寫
b(banary): 二進位制檔案
+: 讀和寫
2. 凡用“r”開啟一個檔案時,該檔案必須已經存在, 且只能從該檔案讀出。
3. 用“w”開啟的檔案只能向該檔案寫入。 若開啟的檔案不存在,則以指定的檔名建立該檔案,若開啟的檔案已經存在,則將該檔案刪去,重建一個新檔案。
4. 若要向一個已存在的檔案追加新的資訊,只能用“a ”方式開啟檔案。但此時該檔案必須是存在的,否則將會出錯。
5. 在開啟一個檔案時,如果出錯,fopen將返回一個空指標值NULL。在程式中可以用這一資訊來判別是否完成開啟檔案的工作,並作相應的處理。
(2)檔案重定向操作
1)將輸入重定向到標準輸入流,重定向的效果就是標準輸入流從檔案中獲取資料。
/*
該函式的效果就是將標準輸入流重定向到檔案中,從檔案中讀取直到第一個換行符的字元,並在控制檯列印輸出
*/
int input_redirection()
{
char c;
freopen("d:/file.txt","r",stdin);//將標準輸入重定向到檔案
while (scanf("%c",&c)!=EOF)//遇到回車換行的話就會結束輸入
{
printf("%c",c);
}
return 0;
}
2)將標準輸出重新定向到控制檯,效果就是將結果輸出到檔案中去
int output_redirection()
{
char c;
freopen("d:/file.txt","w",stdout);//將輸出重定向到標準輸出流中去
while (i<1000)
{
printf("這是一個測試程式\n");
i++;
}
freopen("CON","w",stdout);//將輸出恢復到標準輸出裝置控制檯上。
fclose(stdout);//關閉標準輸出
return 0;
}
3)利用重定向讀寫檔案
int readwrite_redirection()
{
char c[10000];
freopen("d:/file.txt","r",stdin); //從in.txt 中讀入資料
freopen("d:/out.txt","w",stdout); // 將最後資料寫入out.txt中
while(scanf("%s",c)!=EOF) //資料是從in.txt中輸入的
printf("%s\n",c); //寫入out.txt中
fclose(stdin);
fclose(stdout);
return 0;
}
4)區分gets() fgets() fread()函式
int my_readfile()
{
FILE *stream =freopen("d:/file.txt","r",stdin);
char s[102400]="";
if(stream==NULL)
exit(-1);
while ((gets(s))!=NULL)//gets從標準輸入裝置讀字串函式,其可以無限讀取,不會判斷上限,以回車結束讀取
{
printf("%s\n",s); // 讀取file.txt中1到1024位,放入s中 ,我是這麼理解的
}
rewind(stream);
while ((fgets(s,102400,stream))!=NULL)//讀取指定資料的字元 如果讀取失敗則返回為NULL 忽略掉回車
{
printf("%s\n",s);
}
rewind(stream);
while (fread(s,1,102400,stream)==NULL);//讀取指定書目的字元 如果失敗 返回NULL 成功則返回讀到了位元組書目
{
printf("%s\n",s);
}
return 0;
}