我想做的事情: 从一个文件(输入文件)读取位,并将这些(有一定概率)反转位写入另一个文件(输出文件)。
问题是什么: 概率概念似乎无法正常工作。更重要的是,输出文件总是包含比原始输入文件更多的字符,而它们应该包含相同数量的字符。
在此代码示例中,我放置了“x”和“y”而不是倒置位,因此输出文件包含更多字符更加明显
输入文件:01001
输出文件:xyxxxyx
编码:
void invert_bits(FILE **input, FILE **output, double prob){
srand(clock());
char symbol;
while((symbol = getc(*input)) != EOF){
double result = rand()/RAND_MAX;
if(result < prob){
if(simbol == '0'){
char bit = 'x';
fprintf(*output, &bit);
}
else{
char bit = 'y';
fprintf(*output, &bit);
}
}else{
fprintf(*output, &symbol);
}
}
}