gpt4 book ai didi

C:同时读写文件

转载 作者:行者123 更新时间:2023-12-04 04:36:53 28 4
gpt4 key购买 nike

我想做什么:
从一个文件(输入文件)读取位,并将这些(有一定概率)反转位写入另一个文件(输出文件)。

有什么问题:
概率的想法似乎不能正常工作。更重要的是,输出文件总是包含比原始输入文件更多的字符,而它们应该包含相同数量的字符。

在此代码示例中,我放置了“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);
}
}

}

最佳答案

您没有使用 fprintf功能正常。

该函数的签名是:

int fprintf ( FILE * stream, const char * format, ... );



您为它提供的地址不是以空字符结尾的字符串,而是 char , 后面可能跟一个空字符,也可能不是。

使用 *printf 函数打印字符的正确方法是:
fprintf(*output, "%c", bit);

附言为什么您会收到指向文件句柄的指针,即 FILE**而不仅仅是 FILE* ?

关于C:同时读写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19619651/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com