「fwrite」的推薦目錄:
- 關於fwrite 在 コバにゃんチャンネル Youtube 的精選貼文
- 關於fwrite 在 大象中醫 Youtube 的最佳貼文
- 關於fwrite 在 大象中醫 Youtube 的最讚貼文
- 關於fwrite 在 [分享] fwrite v.s. fprintf - 看板b99902HW - 批踢踢實業坊 的評價
- 關於fwrite 在 Using fwrite with char* - Stack Overflow 的評價
- 關於fwrite 在 fwrite( ) and fread( ) to write and read array from file ... - YouTube 的評價
- 關於fwrite 在 fwrite/fread single column input with NA -vs- empty lines #2106 的評價
- 關於fwrite 在 IO FILE之fwrite详解 - 平凡路上 的評價
fwrite 在 大象中醫 Youtube 的最佳貼文
fwrite 在 大象中醫 Youtube 的最讚貼文
fwrite 在 fwrite( ) and fread( ) to write and read array from file ... - YouTube 的推薦與評價
fwrite ( ) and fread( ) to write and read array from file using file handling in c programming. 23,814 views23K ... ... <看更多>
fwrite 在 [分享] fwrite v.s. fprintf - 看板b99902HW - 批踢踢實業坊 的推薦與評價
是說前幾天好像有人問我fwrite跟fprintf的差別(然後我忘了是誰XD")
總之我跟他講好像講錯了Q___Q 對不起Orz...
就打一篇文章來解釋好了 如果你有看到的話真抱歉啦= =a
--
首先要澄清一下fwrite的功用是做什麼的?
看一下fwrite的參數~
int fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
fwrite是你要輸出一串byte到輸出串流(outputStream)中...
而輸出的byte數量是size*count個byte.
其內容是從buffer指到位址往後的size*count個byte.
舉例來說
int a=0x123;
fwrite( &a , sizeof(int) , 1 , fout );
從電腦來看輸出就是: 0x23 0x01 0x00 0x00
而你會想到
fwrite( &a , 1 , sizeof(int) , fout);
其實output也會跟上面一樣。
既然這樣你可能會覺得 那何必用兩個參數?用一個就好了哇~!
主要是因為你傳進去的*buffer有可能是一個陣列指標!
在這個摩門特!你前面寫傳入的type大小 後面要寫出的變數個數就可以了!
例如:
int a[5]={0x125,0xcde};
fwrite( a , sizeof(int) , 3 , fout);
輸出就是 0x25 0x01 0x00 0x00 0xde 0x0c 0x00 0x00 0x00 0x00 0x00 0x00
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
a[0] a[1] a[2]
當然這樣也是會造成某些"利用宣告變數的記憶體順序性"寫出的tricky東東。
例如
int a=0x125,b=0xcde;
fwrite( b , sizeof(int) , 2 , fout);
輸出就有可能是0xde 0x0c 0x00 0x00 0x23 0x01 0x00 0x00
^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^
b a(當然也不一定是a 只是通常是XD)
其實當然你要寫fwrite(b,1,sizeof(int)*2,fout);也不會有人管你啦= =a
只是這樣寫比較容易理解而已:p
喔還有就是return的值會有點差~不過return值就只是成功輸出的byte數/size而已
//某方面來說就是輸出count 只是有可能會輸出失敗而已(?):P
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
了解fwrite的意思之後,就可以來比較他們的差別啦!
首先就是fprintf輸出的方式是,輸出成"我們想看的"東西。
而fwrite輸出是輸出成"電腦看得東西"。
舉例來說
int a = 0x123; // (0x123 = 291)
fprintf(fout,"%d",a);
輸出的就會是'2' '9' '1' 三個字母
從電腦來看就會是輸出0x32 0x39 0x31 也就是三個數字的ASCII碼
與fwrite輸出的0x23 0x01 0x00 0x00差很多吧挖哈哈~
嗯~相信聰明的你(?)已經感受到他們的不同了~那就這樣吧挖哈哈(茶)
大家計程加油吧:p
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.134
※ 編輯: math120908 來自: 140.112.30.134 (12/20 21:19)
... <看更多>