内容为数字的文本文件如何转化成二进制文件? (请高手指点,看我错在哪儿了)

xnq777 2004-08-27 05:50:37
在 d:\c\test.txt 中的内容如下:
01 02 03 04 05 06
07 08 09 10 11 12
02 03 04 05 06 07
.....

我想把这个文本文件中的数据,转化后保存到一个二进制文件 test.bin 中。
编了下面一段小程序,可是不知道错误出在那里了。没有得到自己想要的结果,
请各位高手多多指教!

#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *fp,*fp1;
char ch; int i,*p; p=i;
fp1=fopen("d:\\c\\test.bin","wb+");
fp=fopen("d:\\c\\test.txt","r");
while(!feof(fp))
{ ch=fgetc(fp);
if(ch!='\n'&&ch!=' ') /* 遇到回车换行或者空格都跳过 */
{i=ch-48; /* 修正ASCII 码的数字*/
printf("%d\n",i); /* 打印到屏幕,验证修正后的i值(此处输出显示是正确的)*/
fwrite(p,2,1,fp1); /* 将i值以二进制形式写入文件test.bin中(但是写入文件就不对了)*/
}
}
fclose(fp);fclose(fp1);
}
...全文
161 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xnq777 2004-08-27
  • 打赏
  • 举报
回复
谢谢了! 明白了,因为数组名本身就是地址,而整型变量需要&才能够表示它的地址!

还有一个问题就是转化了以后,怎么才能让分离出来的数合并为原来的数呢?
比如 01 变成 1,而21 却变成了 2和1了。
我试着分别用3个变量来合并: int a1,a2,a3;
把第一个 2赋值给 a1,第二个 1 赋值给 a2 ;a3=10*a1+a2; 然后再把a3 写入文件。
可是总是错误。郁闷!
yangsongx 2004-08-27
  • 打赏
  • 举报
回复
数组名可以做地址值,整型变量要做地址值,就要用&符号来表示。
你在以后的程序中会经常遇到的。C的书上也一定会给你讲到的。
xnq777 2004-08-27
  • 打赏
  • 举报
回复
谢谢两位了!
但是曾经看书上说过:
int *p,a[2]={1,2};
p=a; /* 这样就是正确的*/

整型数组可以这样,为什么整型变量不可以呢?
ma100 2004-08-27
  • 打赏
  • 举报
回复
p=i应写成p=&i

其他地方没问题,只是写入的是0 ,1 ,0, 2,不是1,2
这和你打印的是一样的
yangsongx 2004-08-27
  • 打赏
  • 举报
回复
char ch; int i,*p; p=i;

==================

p=&i吧?不然指针和整数好像不能直接赋值

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧