[问题] 请问C/C++ 如何将资料1bit 1bit的读进档

楼主: edward15241 (笨笨尧)   2014-10-20 15:00:53
如题 要如何将资料1bit 1bit写进档案里?
因为要小弟写压缩的功课 每次编码之后要output时必须写出每个bit逐一写出档案
但苦无办法
目前我只想到一种替代方法 就是用全域变量 设一个阵列去存编码 一个变量去数
每集满八个(满1 byte)就输出一次 然后将阵列的计数变成0 阵列清空 一直做下去
如下面范例
int bitString[8];/* 负责蒐集bit */
int count = 0;
FILE *fp ; /* 负责写档的档案指标(全域变量) 在编码的函示里面开档*/
void putbit(int val){ /* 负责将编完的码写到档案里 */
bitString[count++] = val;
if(count==8){ /* 集满八个 */
val = 128*bitString[0]+64*bitString[1]+ ... +1*bitString[7];
fprintf(fp,"%c",val);
清空 bitString
count = 0;
}
}
可是在此遇到问题 我利用全域变量档案指标开档 然后在自己写的encode函式里面开档
encode里面又呼叫putbit( 程式码在上面 ) 负责把编码输出 可是写不进去
档案是空的 是开档用全域变量会有问题吗? 或是有没有其他的方法能1bit 1bit输出呢?

Links booklink

Contact Us: admin [ a t ] ucptt.com