易码技术论坛

 找回密码
 加入易码
搜索
查看: 79922|回复: 6

请教如何向文件写入贴图数据或整型数组

[复制链接]
发表于 2005-8-19 21:23:00 | 显示全部楼层
还有个问题,呵呵~ 贴图代码是 char picture[]={} 这样定义的,里边是16进制的数,可是却用char来定义,试用过strlen(),是无法得到其长度的,那么用什么方法得到贴图代码的数据长度呢??
发表于 2005-8-19 21:46:00 | 显示全部楼层
16进制数和char基本上没有什么联系
strlen()是从数据开始到第一个NULL(0)出现的位置,并不是获得数据长度。
数组长度是一开始就定义了的
要使这种没有指定长度的数组,编译器会根据你初始化的数据数量自动加上长度
例如:char picture[]={1,2,3,4,5}系统就默认长度是5Byte
发表于 2005-8-19 12:01:00 | 显示全部楼层
首先要明确一点
char 1 Byte
int  2 Byte
long 4 Byte
例如写入数据 int a[100] 的时候
fwrite(a,1,100*2,fp)
4个参数分别是:
a: 数据起始地址
1: size(被忽略,常为1)
100*2: 100项目数,2项目长度 int 为 2 Byte
fp: 目标文件句柄
最后写完了别忘了fclose;要不然有可能数据会丢失
 楼主| 发表于 2005-8-20 19:23:00 | 显示全部楼层
关键就是想要取得系统对图片代码那样很大的数组分配的长度啊,写文件时fwrite()不是要用吗,我试用过较大的写入字节参数,可这样文件垃圾就太多了.
发表于 2005-8-20 20:28:00 | 显示全部楼层
要想计算图片数据的长度给你一个公式
单色:长度 = [(宽度/8)+1]*高度
16色:长度 = [(宽度/2)+1]*高度
 楼主| 发表于 2005-8-22 14:50:00 | 显示全部楼层
哈,非常感谢的说~
 楼主| 发表于 2005-8-19 00:10:56 | 显示全部楼层 |阅读模式
本人LAVA新手,高手指点一下吧;
比如  char picture[]={......};
          int a[]={......};
           void main()
            {char fp;
                fp=fopen(......);
                fwrite(......);
                 rewind(fp);
                 fread(........);}
关键就在最后的fwrite()了,要怎么做呢?
            
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-6-16 05:47 , Processed in 0.012377 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表