鬼魅王子 发表于 2020-6-9 22:13

fwrite函数问题

首先我定义了一个结构体
typedef struct book
{
        char sn;//书号
        char name;//书名
        char author;//作者
        float price;//单价
        char press;//出版社
        int num;//库存册数
}BOOK;


然后我往里面储存了数据,但是 我吧char类型的长度都弄长了,所以所有空间不能全部利用,这就导致我是用fwrite写出时候会出现乱码,这种情况要如何解决呢?

鬼魅王子 发表于 2020-6-9 23:49

有人能解决一下我的问题吗?

absman1972 发表于 2020-6-10 08:09

fwrite是連續寫入一段記憶體資料,如果記憶體內本來就有亂碼就無法避免

如果你的 char 陣列(或說字串),有使用 '\0' 來標記結束,那麼回讀時應該會略過亂碼

如果實在很在意檔案中的亂碼,可以考慮把它們全部清成 '\0' 或空白,再填入數據,最後再fwrite寫出
這樣做的話,還要考慮你數據量大不大,如果量非常大,清除的過程會影響你的最終效率

清除做法很多,memset、memcpy、自己寫迴圈清除…等等
可以考慮自行測試一下各種方法的清除效率(比如清除一萬筆測量需要的時間)
最終再決定要使用那種方法來清除

希望有幫助到你

鬼魅王子 发表于 2020-6-10 16:29

absman1972 发表于 2020-6-10 08:09
fwrite是連續寫入一段記憶體資料,如果記憶體內本來就有亂碼就無法避免

如果你的 char 陣列(或說字串), ...

好的谢谢
页: [1]
查看完整版本: fwrite函数问题