看板 C_and_CPP 關於我們 聯絡資訊
新手 小弟又來了, 有一個問題不太懂, 小弟只知道使用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
VictorTom:是誰說fwrite數值必須是char的??說到底餵給fwrite輸出的 11/24 09:37
VictorTom:應該是指標, 只能說有實驗精神是好事, 但是對標準API有 11/24 09:38
VictorTom:疑問, 還可以先查查看API說明或手冊, 或比用猜的好:) 11/24 09:38
VictorTom:http://0rz.tw/8Diy8 下面有相關的fread/fprintf等@_@" 11/24 09:40
cheekyboy:我使用fwrite(ImageArray,sizeof(long),size,fImage) 11/24 09:46
cheekyboy:看得的txt是亂碼,剛剛看了v大提供的網址上的example 11/24 09:46
cheekyboy:他所使用的陣列為 char buffer[] ~"~ 又相信V大是對的 11/24 09:48
cheekyboy:越來越困惑了>< 11/24 09:48
VictorTom:不要只看example, 請看它函數的描述與用法解釋.... 11/24 10:03
VictorTom:說更明確的, 請仔細琢磨 Parameters 那大段的內容:) 11/24 10:04
ledia:fwrite 就好像把 char array 拿去 fprintf %c 一樣 11/24 10:08
ledia:跟 fprintf %d 當然會有一些不一樣 11/24 10:08
ledia:而 fread 也有一個 fscanf 相對應 11/24 10:09
VictorTom:除了order的問題, %c可以print所有0~255的byte value嗎? 11/24 12:25
VictorTom:主要就是128以上的時候, 不確定fprintf印出來的結果@_@" 11/24 12:26
ledia:啊, 我說一樣是跟 fwrite + char array 來比較 11/24 13:14
ledia:如果 128 以上就不行... 那我們還要 fprintf 來做啥? XD 11/24 13:14
VictorTom:平常都拉UltraEdit的ASCII table看, 然後就搞混了以為 11/24 13:20
VictorTom:128以後%c會印不出來, 真是不好意思....Orz 11/24 13:21
ledia:如果 128 以上印不出來, 那 utf-8 就糗大了 11/24 13:48
VictorTom:(挺)小弟我從不用printf印%c值在128以上的...(光速逃XD) 11/24 13:58