我想要做什麼: 從一個文件(輸入文件)讀取位,並將這些(有些概率)反轉位寫入其他文件(輸出文件)。C:同時讀取和寫入文件
問題: 概率思想似乎不能正常工作。更重要的是,輸出文件總是包含更多字符,然後是原始輸入文件,而它們應該包含相同數量的字符。
代替反轉的位我已經把「X」和「y」,因此,它更明顯的是,輸出文件包含多個字符INPUT文件
在此代碼示例,: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);
}
}
}
您確定它正在寫入正確的文件嗎?您可以通過查看文件的時間戳或重命名文件來檢查,但不能更改程序。 –
將'char'的地址作爲格式參數傳遞給'printf'幾乎肯定是錯誤的。可能發生的情況是,帶有'y'的局部變量存在於具有'x'的局部變量之前的內存中,並且它們後面都跟着一個'\ 0',所以無論何時您嘗試打印'y',都會打印出'yx相反。 – millimoose
你不能「寫位」 - 只有字節。 –