1樓:匿名使用者
fwrite是向流中寫入資料,而fprintf是向流中寫入格式資料。兩者的共同點為向流中寫入資料,至於區別可以看看兩者的申明:
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
file *stream
);int fprintf(
file *stream,
const char *format [,
argument ]...
);前者fwrite寫入流stream中的資料是buffer指定的內容,內容的位元組大小分別由size和count兩個引數來指定,因此寫入流stream中的內容有可能是亂碼,但是有效的資料。
後者fprintf寫入流stream中的資料則由argument來指定,並且這些argument的內容分別由format指定的格式來顯示,因此寫入stream的內容通常來說是文字字元流,當然,也允許寫入格式亂碼。
兩者都可以將文字寫入流stream中。比如:
fwrite("hello world!", 1, 12, fp);
與fprintf(fp, "%s", "hello world!");等價。
2樓:康邦世英悟
看你的**,只寫了一次,想反覆寫入自然要執行多次fwrite函式,執行次數如果已知一般用for迴圈,次數未知但是結束寫入的條件知道一般用while迴圈,舉個簡單例子:
inti=0;
for(i;
i<10;
i++)
fwite(outfile,strlen(outfile),1,fp);
這裡就會寫入10次outfile到檔案流fp中,如果開啟方式是w+(追加),自然能看到寫入的10次資料。
你在多次寫入時不要多次開啟,就是迴圈語句不要把fopen函式也包含起來。
寫入方式:w寫
+追加b二進位制
wb+:以追加寫方式開啟二進位制檔案,檔案存在則追加,不存在則建立。
3樓:匿名使用者
fwrite是把檔案中的資料讀出來,格式應該知道吧,fprintf是資料寫入到指標所指的檔案。
c語言 fwrite()和fprintf()的區別
4樓:繡乞群群
當使用fwrite將乙個int型數字65寫入文字檔案時,由於65對應的二進位制數是1000001,十六進製制數是0x41,儲存的是以二進位制的形式1000001.在notepad++中使用十六進製制方式開啟顯示的是:0x0041,轉換為十進位制則為65,使用記事本開啟這個文字檔案後顯示的是a,因為記事本程式預設為儲存在文字檔案中的資料都是ascii碼形式儲存,它把65當做ascii碼翻譯為字元a。
當使用fpintf將乙個int型數字65寫入文字檔案時,將65每一位轉換為ascii碼儲存,6、5分別對應ascii碼54、53,儲存的是ascii碼54、53.在notepad++中使用十六進製制方式開啟顯示的是:3635,轉換為十進位制則為54、53,這正是數字6、5的ascii碼。
使用記事本開啟這個文字檔案時,記事本將儲存在其中的54、53當做ascii碼翻譯為字元6、5顯示,我們看到的是便是字元65。
5樓:與子如初見
fwrite是按二進位制寫資料到檔案,而fprintf是嚴格按照引數裡邊的格式控制符,寫資料到檔案。可以是十進位制,二進位制,字串,等等,而且可以直接開啟檔案檢視資料,二進位制檔案是不能直接開啟檔案檢視資料的。
6樓:匿名使用者
一、作用區別:
fwrite是c語言函式,指向檔案寫入乙個資料塊。
fprintf是c/c++中的乙個格式化寫—庫函式;其作用是格式化輸出到乙個流/檔案中;
二、函式原型區別:
fwrite:size_t fwrite(const void* buffer, size_t size, size_t count, file* stream);
fprintf:int fprintf (file* stream, const char*format, [argument]);
三、返回值區別:
fwrite:返回實際寫入的資料項個數。
fprintf:返回值是輸出的字元數,發生錯誤時返回乙個負值。
7樓:匿名使用者
fprintf(fp, "%d", buffer); 是將格式化的資料寫入檔案
fprintf(檔案指標,格式字串,輸出表列);
是以二進位方式寫入檔案
fwrite(資料,資料型別大小(位元組數),寫入資料的最大數量,檔案指標);
c語言 fprintf()與fwrite()的區別
8樓:與子如初見
首先 第乙個 因為fprintf寫入檔案的時候是有格式化控制符列表的 而是用 fscanf是可以利用這個格式化控制列表讀取資料的 當然你也可以使用fgets 和 fgetc 讀取, 這都是沒有問題的。
文字方式寫入的意思應該是資料裡邊只有文字(包括數字字串之類)的意思吧,這個是我的理解。
9樓:匿名使用者
1)不是。它們只是功能不一樣。
2)用文字方式寫入的內容,在遇到'\n'時,寫檔案的函式會自動追加乙個'\r'。如果你不希望檔案的內容被改變,應該用二進位制方式寫入。
c語言問題,C語言問題。
考驕 用指標將兩個字串連結接起來,前一個while迴圈,確定s1字串走完,第二個while開始將s1的逐個字元複製給s1走完,也就是末尾,這樣就可以把字串都匯入到s1中 最後一個空寫的應該寫return s1 長魚修韋 很久沒碰這東西了。我來解釋下 第一個while的迴圈是為了讓指標指向第一個字串的...
C語言問題,c語言問題?
自我程式設計 列印輸出乙個ok。因為前面迴圈for語句有分號結束。所以後面的printf語句不在迴圈內,不受迴圈語句影響。 理佑平鄲胭 結果是22 7 7 8 22 你可以將 i i i i是先 1再計算,還有這裡的運算順序是從左到右,所以應該是7 7 i 14 8 22 前兩個相加時,i先加1,加...
c語言問題,C語言問題?
這個問題說難不難,但理解可能有點玄乎而已,但是打個比方來理解就太容易掌握啦!就是說scanf的認定讀取,比如你單純的scanf c ch 那麼實際上已經認定了第乙個字元出現就把它賦予給ch,如果是你的scanf c 前面多了乙個空格,所以就認定了出現第乙個空格後的字元賦予給ch,如果寫成這樣 sca...