阅读:2139回复:7
请问一个关于写文件的问题
我有段小程序如下:
main() {FILE *fp; int data_audio[0x2000]; .......//将采集的数据放入data_audio. .... ..... if ((fp=(fopen( "mydata3","wb+")))==NULL) exit(0); else fwrite (data_audio, sizeof (int) ,0x2000,fp); } 现在问题是我采集的数据是十六位的,将data_audio 数组中的数据存入二进制文件fp后,用ultraedit 打开生成的文件mydata3,里面的数据只有data_audio中的每个数据的低8位,高8位就没有写到文件中去,请问这是怎么回事?怎么才能把我采集到的数据完整的写入到这个文件中去啊? 我用的开发环境是ti的ccs。 |
|
沙发#
发布于:2004-08-18 17:33
试一试
fopen( "mydata3","wt+")) |
|
|
板凳#
发布于:2004-08-18 18:36
试一试 wt+是什么意思,没有听过,能否解释一下啊? 我读取在缓冲中采集的数据,播放的效果很好,为什么把缓冲中的数据生成文件就播放就成了噪音了啊? |
|
地板#
发布于:2004-08-18 18:53
试一试 不行,在ccs下运行该语句后出现Invalid CIO command (234).,这样的错误提示,不知道是为什么? |
|
地下室#
发布于:2004-08-19 21:07
试一试 |
|
5楼#
发布于:2004-08-20 08:38
[quote]试一试 wt+是什么意思,没有听过,能否解释一下啊? 我读取在缓冲中采集的数据,播放的效果很好,为什么把缓冲中的数据生成文件就播放就成了噪音了啊? [/quote] 你不说高8位没了吗?数据丢一半,哪能好吗, |
|
|
6楼#
发布于:2004-08-27 22:10
a _O_WRONLY | _O_APPEND (usually _O_WRONLY | _O_CREAT | _O_APPEND)
a+ _O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT ) r _O_RDONLY r+ _O_RDWR w _O_WRONLY (usually _O_WRONLY | _O_CREAT | _O_TRUNC) w+ _O_RDWR (usually _O_RDWR | _O_CREAT | _O_TRUNC) b _O_BINARY t _O_TEXT 不知道你的文件大小是否跟你的缓冲一样大(我想一般不会有差别的) 在读文件的时候不知道是否正确。 :) |
|
7楼#
发布于:2004-10-29 00:09
这个问题可能并不是打开文件和写文件的问题,依我看多办是数据源本身有问题!即data_audio[]中的数据不正确,这可能是你采集的数据有问题或者是将采集的数据放入dada_audio[]的过程中出现了问题,总之你应该首先确保数据本身没问题,要却定是否是fopen()和fwrite()的问题,你可以将dada_audio[]预先置入几个16位的值,然后直接将其写入文件看看结果是否正确,如果正确那就是数据源的问题了,我不太相信fopen()和fwrite()会出问题。
|
|