作者cheekyboy (唷)
看板C_and_CPP
标题[问题] fprinf & fread
时间Tue Nov 24 09:28:31 2009
新手 小弟又来了,
有一个问题不太懂,
小弟只知道使用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
1F:推 VictorTom:是谁说fwrite数值必须是char的??说到底喂给fwrite输出的 11/24 09:37
2F:→ VictorTom:应该是指标, 只能说有实验精神是好事, 但是对标准API有 11/24 09:38
3F:→ VictorTom:疑问, 还可以先查查看API说明或手册, 或比用猜的好:) 11/24 09:38
5F:→ cheekyboy:我使用fwrite(ImageArray,sizeof(long),size,fImage) 11/24 09:46
6F:→ cheekyboy:看得的txt是乱码,刚刚看了v大提供的网址上的example 11/24 09:46
7F:→ cheekyboy:他所使用的阵列为 char buffer[] ~"~ 又相信V大是对的 11/24 09:48
8F:→ cheekyboy:越来越困惑了>< 11/24 09:48
9F:→ VictorTom:不要只看example, 请看它函数的描述与用法解释.... 11/24 10:03
10F:→ VictorTom:说更明确的, 请仔细琢磨 Parameters 那大段的内容:) 11/24 10:04
11F:推 ledia:fwrite 就好像把 char array 拿去 fprintf %c 一样 11/24 10:08
12F:→ ledia:跟 fprintf %d 当然会有一些不一样 11/24 10:08
13F:→ ledia:而 fread 也有一个 fscanf 相对应 11/24 10:09
14F:推 VictorTom:除了order的问题, %c可以print所有0~255的byte value吗? 11/24 12:25
15F:→ VictorTom:主要就是128以上的时候, 不确定fprintf印出来的结果@_@" 11/24 12:26
16F:推 ledia:啊, 我说一样是跟 fwrite + char array 来比较 11/24 13:14
17F:→ ledia:如果 128 以上就不行... 那我们还要 fprintf 来做啥? XD 11/24 13:14
18F:推 VictorTom:平常都拉UltraEdit的ASCII table看, 然後就搞混了以为 11/24 13:20
19F:→ VictorTom:128以後%c会印不出来, 真是不好意思....Orz 11/24 13:21
20F:→ ledia:如果 128 以上印不出来, 那 utf-8 就糗大了 11/24 13:48
21F:推 VictorTom:(挺)小弟我从不用printf印%c值在128以上的...(光速逃XD) 11/24 13:58