作者Pix911 (Pix)
看板C_and_CPP
標題[問題] C語言fread後面跑出亂碼
時間Mon Jun 13 23:13:08 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) #include <stdio.h>
#include <string.h>
#include <stdlib.h>
問題(Question): 印出的資料在10以前是正常
10以後就變成亂碼
預期的正確結果(Expected Output): 編號 地區 夜市名稱 營業地點 營業時間
1 基隆 基隆廟口夜市 仁愛區仁三路和愛四路一帶 全年無休
2 台北 士林夜市 捷運劍潭站至士林站之間 全年無休
. . . . .
. . . . .
. . . . .
10 新竹 後站夜市 新竹市南大路139巷 二、四
11 新竹 清大夜市 新竹市建功路 全年無休
12 苗栗 文化夜市 嘉義市中心 五
錯誤結果(Wrong Output): 編號 地區 夜市名稱 營業地點 營業時間
1 基隆 基隆廟口夜市 仁愛區仁三路和愛四路一帶 全年無休
2 台北 士林夜市 捷運劍潭站至士林站之間 全年無休
. . . . .
. . . . .
. . . . .
10 新竹 後站夜市 新竹市南大路139巷 二、四
-1224736768s竹 M大夜市 s竹市建功路 悧~無休
-1392508928]栗 憭 J市 顫q市中心 ?
程式碼(Code):(請善用置底文網頁, 記得排版) https://gist.github.com/1022970 (這樣OK嗎? 不好意思...我是第一次用這一類網址)
補充說明(Supplement): 是先讀入資料再印出來
不知道為什麼編號10之前都好好的
11後就變成了亂碼
輸入進去的資料沒有問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.170.180
推 LPH66:沒貼程式真的只能隔空抓藥...這現象大概只能猜陣列超出範圍 06/13 23:16
→ Pix911:很長我不知道怎麼貼ˊˋ 06/13 23:17
推 LPH66:都說了請善用置底文網頁 Orz 06/13 23:18
→ fjm31714:"請善用置底網址" 06/13 23:19
※ 編輯: Pix911 來自: 220.141.170.180 (06/13 23:21)
推 LPH66:程式看起來似乎沒有問題 也許要看到資料檔案才能說是啥問題 06/13 23:44
→ LPH66:說似乎是因為我好像發現了某個細節 但要看到資料檔才能確認 06/13 23:45
推 kiedveian:新 0xB773 s 0x73 -1224736768 B7000000 06/13 23:46
→ kiedveian:說不定問題在第十行的資料結尾… 06/13 23:48
推 LPH66:嗯 樓上發現的這一點我有考慮進去 所以才說某個細節可能有關 06/13 23:48
→ LPH66:所以我才說要看到資料檔才能確認... 06/13 23:49
推 cole945:fopen mode用binary mode呢? 應該是有換行字被吃掉了.. 06/14 00:00
→ CCWck:應該是國字"四"的ascii碼的問題 請找"許蓋功"問題 06/14 01:24
→ hilorrk:看到中文字 第一個想到的也是許功蓋 06/14 03:21
推 xatier:許功蓋飯問題囉XD 06/14 08:23
→ angleevil:改成寬字元吧 06/14 09:56
推 LPH66:fread/fwrite 應該和許功蓋問題無關吧... 06/14 09:58
→ angleevil:ft = fopen( "nightmarket.dat", "r+" );r+改成rb+ 06/14 10:09
→ angleevil:65行的main改成continue 06/14 10:12
→ angleevil:85行的r改成rb 06/14 10:14
→ angleevil:65行不用改,我誤解他在while範圍內了 06/14 10:24
→ angleevil:fread判斷結尾是用等於0來判斷,你用feof不一定抓到 06/14 10:27
→ angleevil:檔案結尾,甚至有可能會少讀or多讀一行 06/14 10:27
→ angleevil:還有每次讀完檔,最好用memset輕空struct內容 06/14 10:30
→ angleevil:~"~這是我能想到錯誤的點 06/14 10:30
感謝a大<(_ _)>
沒有亂碼了
我把r改成rb
還有學長建議新增完重開檔案
終於OK了
還有....L大很抱歉
我弄了好久還是沒辦法上傳資料檔ˊˋ
最後...謝謝各位前輩的幫忙^^
※ 編輯: Pix911 來自: 111.252.11.99 (06/14 14:18)
→ angleevil:char改成unsigned char 06/14 14:36
→ Pix911:哪個char? 06/14 16:00
→ angleevil:struct 裡面的char 06/14 16:29
→ Pix911:哦哦~那跟原本會有甚麼差別嗎? 06/14 16:34
→ angleevil:恩,我其實也不太懂這之間的細節,但是我看網上,printf 06/14 16:35
→ angleevil:中文時,大家都用unsigned char.這可能要請有經驗的回答 06/14 16:35
→ james732:對中文用 char 似乎就挺怪異的... 06/14 16:53
→ angleevil:其實我是想建議wchar_t拉,只是我最近才知道這東西 06/14 22:03
→ angleevil:所以就沒建議了 06/14 22:04