[問題] fprinf & fread

看板C_and_CPP (C/C++)作者 (唷)時間16年前 (2009/11/24 09:28), 編輯推噓6(6015)
留言21則, 3人參與, 最新討論串1/1
新手 小弟又來了, 有一個問題不太懂, 小弟只知道使用fwite跟fread是可以用來寫入(讀取)二進位檔或是文字檔, 然後用fwrite寫入文字檔寫入數值若為123之類的數字就會出現亂碼, 因為數值必須改為char, 所以可以使用fprintf來寫入, 問題來了,那如果用fprintf寫入,使用fread來讀取會發生什麼事情嗎?? 目前使用好像可以用,但是又好像怪怪的, 語法如下: fImage=fopen("D:\\test2.txt","w"); for(i=0;i<1024;i++) { for(j=0;j<1024;j++) { fprintf(fImage,"%d ",*(ImageArray+i*1024+j)); } } fclose(fImage); fImage=fopen("D:\\test2.txt","r"); fread(ImageArray,sizeof(long),size,fImage); fclose(fImage); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.206.127

11/24 09:37, , 1F
是誰說fwrite數值必須是char的??說到底餵給fwrite輸出的
11/24 09:37, 1F

11/24 09:38, , 2F
應該是指標, 只能說有實驗精神是好事, 但是對標準API有
11/24 09:38, 2F

11/24 09:38, , 3F
疑問, 還可以先查查看API說明或手冊, 或比用猜的好:)
11/24 09:38, 3F

11/24 09:40, , 4F
http://0rz.tw/8Diy8 下面有相關的fread/fprintf等@_@"
11/24 09:40, 4F

11/24 09:46, , 5F
我使用fwrite(ImageArray,sizeof(long),size,fImage)
11/24 09:46, 5F

11/24 09:46, , 6F
看得的txt是亂碼,剛剛看了v大提供的網址上的example
11/24 09:46, 6F

11/24 09:48, , 7F
他所使用的陣列為 char buffer[] ~"~ 又相信V大是對的
11/24 09:48, 7F

11/24 09:48, , 8F
越來越困惑了><
11/24 09:48, 8F

11/24 10:03, , 9F
不要只看example, 請看它函數的描述與用法解釋....
11/24 10:03, 9F

11/24 10:04, , 10F
說更明確的, 請仔細琢磨 Parameters 那大段的內容:)
11/24 10:04, 10F

11/24 10:08, , 11F
fwrite 就好像把 char array 拿去 fprintf %c 一樣
11/24 10:08, 11F

11/24 10:08, , 12F
跟 fprintf %d 當然會有一些不一樣
11/24 10:08, 12F

11/24 10:09, , 13F
而 fread 也有一個 fscanf 相對應
11/24 10:09, 13F

11/24 12:25, , 14F
除了order的問題, %c可以print所有0~255的byte value嗎?
11/24 12:25, 14F

11/24 12:26, , 15F
主要就是128以上的時候, 不確定fprintf印出來的結果@_@"
11/24 12:26, 15F

11/24 13:14, , 16F
啊, 我說一樣是跟 fwrite + char array 來比較
11/24 13:14, 16F

11/24 13:14, , 17F
如果 128 以上就不行... 那我們還要 fprintf 來做啥? XD
11/24 13:14, 17F

11/24 13:20, , 18F
平常都拉UltraEdit的ASCII table看, 然後就搞混了以為
11/24 13:20, 18F

11/24 13:21, , 19F
128以後%c會印不出來, 真是不好意思....Orz
11/24 13:21, 19F

11/24 13:48, , 20F
如果 128 以上印不出來, 那 utf-8 就糗大了
11/24 13:48, 20F

11/24 13:58, , 21F
(挺)小弟我從不用printf印%c值在128以上的...(光速逃XD)
11/24 13:58, 21F
文章代碼(AID): #1B2pR1OB (C_and_CPP)
文章代碼(AID): #1B2pR1OB (C_and_CPP)