檔案讀寫是經常用到的,在c/c++中關於檔案讀寫的函式也很毒,最近在使用檔案讀寫的時候就發現一些問題,總結一下:
1.
fgetc();
函式原型是:int fgetc( file *stream );
該函式每一次從檔案中讀取乙個字元,對於空格和回車都可以讀取!
source.txt 檔案內容為「thank you very much」
驗證程式如下:
#include
#include
#include
using namespace std;
int main()
if((outfile=fopen("result.txt","w"))==null)
char str[1024];
int i=0;
int m=0;
while(!feof(infile))
cout<<"i:="<
return 0;
} 程式執行以後輸出:i= 20;
本來是19個字元,輸出是20,原因是在讀檔案的時候,整個檔案作為string調進記憶體中,最後乙個「/0」標示string的結尾,所以fgetc()把「/0」也讀了進來!
如果在上述source.txt檔案的末尾敲一下回車鍵,再執行程式輸出i=21;其中包括回車鍵。所以21;
2.fputc();該函式的原型是int fputs( const char *string, file *stream );
其功能是把指定字元寫入到檔案中;
和函式fgetc()相對應的使用!
3.fscanf();該函式原型為:int
fscanf( file *stream, const char *format [, argument ]... );
是格式化的讀檔案函式,
fprintf();該函式的原型為:int
fprintf( file *stream, const char *format [, argument ]... );
是格式化的寫檔案函式;
測試程式**為:
while(!feof(infile))
4.
fgets();該函式原型為:char *fgets( char *string, int n, file *stream );
可以理解為逐行讀檔案的函式,遇到回車鍵則返回,並丟棄回車鍵符號;將讀取的整行內容作為乙個string儲存到char*string的記憶體中。
fputs();該函式原型為:
int fputs( const char *string, file *stream );
將string指向的內容以字串的形式一下寫進檔案中;
5.
getline()函式;有關該函式詳細說明如下:
#include
#include
#include
<
string>
using
namespace
std;
//輸出空行
void
outputanemptyline()
//讀取方式: 逐詞讀取, 詞之間用空格區分
void
readdatafromfilewbw() }
//讀取方式: 逐行讀取, 將行讀入字元陣列, 行之間用回車換行區分 }
//讀取方式: 逐行讀取, 將行讀入字串, 行之間用回車換行區分
void
readdatafromfilelblintostring() }
int main()
c c 檔案讀寫操作
不要覺得我們說的檔案就是指txt,或者doc才是檔案,其實計算機裡面的年東西都是檔案。當我們用專門的軟體開啟他們的時候,可以看到裡面的東西,有記憶體也有二進位制 什麼的。開啟乙個檔案的格式 file p fopen home zouux 666 wb 第乙個引數是檔案的絕對路徑這裡的路徑為linux...
C C 檔案讀寫
c語言 include include int main void 寫入 fwrite msg,1,strlen msg 1,stream 重定位流 資料流 檔案 上的檔案內部位置指標 fseek stream,0,seek set 讀出 fread buf,1,strlen msg 1,strea...
C C 檔案讀寫
c語言 1.二進位制檔案寫 includevoid main file fp null 檔案指標 fp fopen text2.txt w 開啟檔案 while fp 開啟失敗 file fp null 檔案指標 fp fopen text3.txt w 開啟檔案 while fp 開啟失敗 插入後...