标题:数据在内存中是以二进制还是以ASCII形式存放
取消只看楼主
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
 问题点数:0 回复次数:6 
数据在内存中是以二进制还是以ASCII形式存放

不知数据在内存中是如何存放的,是二进制,还是ASCII形式,文件在磁盘上二进制还是ASCII形式,这将关系到文件函数的使用,如:如果在内存中是二进制,用"W"的方式打开一个文件,然后用
fwrite()函数写文件,就会发生错误,如果在内存中是ASCII形式,用fwrite()就不会发生错误,不知我说的对不对,请指点……谢谢!

[此贴子已经被作者于2006-6-18 9:09:37编辑过]

搜索更多相关主题的帖子: 二进制 内存 ASCII 数据 形式 
2006-06-18 09:03
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 
一个文件在打开之前怎么知道它是二进制还是ASCII形式呢?如果文件是ASCII,那么在内存中就是ASCII形式吗?如果把内存中的ASCII文件用“Wb“方式写入磁盘,是不是要进行转换呢?

2006-06-18 09:26
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 

运行此程序,查看c:\data文件,用16进制方式查看可知,一个数字,如果用”W“方式则会写入它的ASCII值,如果
用”Wb“的方式则会把它转换成对应的二进制值写入,如果是输入的”1“则写入0001,”2“写入0010,”3“写入0011,”4“写入0100,……可是如果输入是字母,汉字用”Wb“方式写入,那么会将要输入的字符转换成什么呢?

[此贴子已经被作者于2006-6-18 10:09:04编辑过]


2006-06-18 10:04
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 
如果把程序改成这样,依然能够用记事本查看data.bin文件
#include<stdio.h>
main()
{
FILE *f1,*f2;
int i;
char ch;
ch='h';
f1=fopen("c:\\data.txt","w");
f2=fopen("c:\\data.bin","wb");
printf("out:\n");
for(i=1;i<=100;i++)
{
printf(" %c ",ch);
fprintf(f1,"%c ",ch);
fwrite(&ch,sizeof(char),1,f2);
if(i%10==0) printf( "\n");
if(i%10==0)fprintf(f1,"\n");
}
fclose(f1);
fclose(f2);
}

2006-06-18 10:37
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 
如果改成这样则c:\data.bin中无任何数据,c:\data.txt中正常显示
#include<stdio.h>
main()
{
FILE *f1,*f2;
int i;
char ch;
ch='h';
f1=fopen("c:\\data.txt","w");
f2=fopen("c:\\data.bin","wb");
printf("out:\n");
for(i=1;i<=100;i++)
{
printf(" %c ",ch);
/* fprintf(f1,"%c ",ch);*/
fwrite(&ch,sizeof(char),1,f1);
if(i%10==0) printf( "\n");
if(i%10==0)fprintf(f1,"\n");
}
fclose(f1);
fclose(f2);
}

2006-06-18 10:58
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 

读一读谭《C程序设计》第二版,320页19——26行,它的意思好象是任何数据在内存中是二进制存放的,使用文件函时要注意取的值是二进制还是ASCII形式


2006-06-18 11:19
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
得分:0 

谢谢各位的指点,也谢谢版主的教诲,我一定努力……努力……努力……


2006-06-19 01:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-73092-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052310 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved