首頁>Club>
2
回覆列表
  • 1 # 方圓九洲V

    fprintf(fp, "%d", buffer); 是將格式化的數據寫入文件

    fprintf(文件指針,格式字符串,輸出表列);

    fwrite(&buffer, sizeof(int), 1, fp);是以二進位方式寫入文件

    fwrite(數據,數據類型大小(字節數),寫入數據的最大數量,文件指針);

    由於fprintf寫入時,對於整數來說,一位佔一個字節,比如1,佔1個字節;10,佔2個字節;100,佔3個字節,10000,佔5個字節

    所以文件的大小會隨數據的大小而改變,對大數據空間占用很大。

    而fwrite是按二進制寫入,所以寫入數據所佔空間是根據數據類型來確定,比如int的大小為4個字節(一般32位下),那麼整數10所佔空間為4個字節,100、10000所佔空間也是4個字節。所以二進制寫入比格式化寫入更省空間。

  • 2 # 髒話比謊話乾淨558

    fwrite是向流中寫入數據,而fprintf是向流中寫入格式數據。兩者的共同點為向流中寫入數據,至於區別可以看看兩者的申明:

    size_tfwrite(

    constvoid*buffer,

    size_tsize,

    size_tcount,

    file*stream

    );

    intfprintf(

    file*stream,

    constchar*format[,

    argument]...

    );

    前者fwrite寫入流stream中的數據是buffer指定的內容,內容的字節大小分別由size和count兩個參數來指定,因此寫入流stream中的內容有可能是亂碼,但是有效的數據。

    後者fprintf寫入流stream中的數據則由argument來指定,並且這些argument的內容分別由format指定的格式來顯示,因此寫入stream的內容通常來說是文本字符流,當然,也允許寫入格式亂碼。

    兩者都可以將文本寫入流stream中。比如:

    fwrite("helloworld!",1,12,fp);

    fprintf(fp,"%s","helloworld!");

    等價。

  • 中秋節和大豐收的關聯?
  • 光纖陀螺如何測初始角度?