亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

麻煩幫忙解釋一下,關于fread和fwrite函數使用中的一個問題

麻煩幫忙解釋一下,關于fread和fwrite函數使用中的一個問題

C++ C
Cats萌萌 2021-10-20 15:15:52
用fread和fwrite函數讀寫結構體數據,把數據寫入文件時,只有漢字部分輸出正確,數字部分全市亂碼,讀取數據時,數字部分顯示的好像是內存地址。請高手指點,急求,謝謝。#include<stdio.h>#include<stdlib.h>struct time{int year;int mon;int day;int hour;int min;float sec;};void main(){struct time tim[8];int i;for(i=0; i<8; i++){tim[i].year = 2000;tim[i].mon = 1;tim[i].day = 1;tim[i].hour = 0;tim[i].min = 0;tim[i].sec = 0.0;}FILE *fp;fp = fopen("E:\\C程序\\1.txt","wb");if(fp==NULL){printf("file open error!\n");exit(0);}else{for(i=0; i<8; i++){fwrite(&tim[i],sizeof(struct time),1,fp);printf("%d %d %d %d %d %4.2f\n",tim[i].year,tim[i].mon,tim[i].day,tim[i].hour,tim[i].min,tim[i].sec);}}fclose(fp);}
查看完整描述

2 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

你寫入文件時取的是地址,還是地址的地址,別搞錯了,要么指針,千萬別又對指針取地址了。那樣存取的就是地址了。fread,則是讀的時候一樣,都要注意這個問題

查看完整回答
反對 回復 2021-10-24
?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

不知你是如何輸出的?
用fwrite()寫入文件的值,如果用fread()來讀取是可以取回原始的內容的,但是如果用fwrite()寫入這個txt文件是為了用“記事本”等文本處理軟件打開來閱讀,那么一定會有亂碼的情況。因為二進制的讀寫會直接將數值原樣寫入文件,不會進行ASCII碼的轉換,而文本都是需要經過ASCII碼轉換的。
如果是為了打開TXT文件進行閱讀,應該使用fprintf()/fscanf()等函數進行讀寫。

查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 276 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號