hur.cn - 华软网

 热门搜索

【求助】Fread文件读取问题

  作者:未知    来源:网络    更新时间:2011/8/18
char ch[4194303];
FILE* fp;

fp = fopen("bei\\123.txt", "r+"); //打开这个123文件

while(!feof(fp))
{
  fread(ch, 1, 4194303, fp);    //写入ch 数组里
}
//////////////////////循环读取ch数组里的数据
for (int idx=0;idx<4194304;idx++)
{
   int temp3 = ch[idx];
}
////////////////////////////////////

用记事本打开123.txt,内容是"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 51 53 50 58 59 51 50 51 52 78 51等等"为什么我读出的是33 53 33 45 32 等等,都没有33 45 32这些数,哪里来的呢?。之前的0都没有读,读了些无关的数据。


---华软 网友回答---
我觉得是犯了一个错误。二进制和十进制的问题没有搞一致的问题
---华软网友回复---
...4194304
你这个文件这么长...
fread把文本内容读入内存,你看到的33,53,33什么的就是文本字符的ascii码。
---华软网友回复---
引用 2 楼 ndy_w 的回复:
...4194304
你这个文件这么长...
fread把文本内容读入内存,你看到的33,53,33什么的就是文本字符的ascii码。

该如何修正这个问题呢?
---华软网友回复---
int temp3 = ch[idx];
这里你是把字符赋给了int类型
比如字符'0',对于的ASCII码是0x30,
---华软网友回复---
引用 4 楼 visualeleven 的回复:
int temp3 = ch[idx];
这里你是把字符赋给了int类型
比如字符'0',对于的ASCII码是0x30,

哦,好的谢谢。如果才能让temp3等于0呢?感觉要字符串转换成整形。
---华软网友回复---
转成整型?!'0' - '0' = 0。可是文本里的不是数字的字符呢?'X'-'0'=?
---华软网友回复---
引用 6 楼 ndy_w 的回复:
转成整型?!'0' - '0' = 0。可是文本里的不是数字的字符呢?'X'-'0'=?


这,那该怎么去实现呢?
---华软网友回复---
记事本里面看到的是字符, ch[idx]保存的是asc值,不一样的。而且有些“值”记事本只能显示为空白
---华软网友回复---
楼上都说了,是进制转换问题,用记事本找开看到的是字符型,以前我也犯过同样的错误。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。