ファイルから複数行のデータを読み書きするのに問題があります。問題は、ファイルから複数行のバイナリを読み取り、それを 10 進数に変換して、複数行の 10 進数を新しいファイルに書き込むことです。プログラムがバイナリの1行を10進数に変換するのに問題はありませんでした。これは、複数の行がある場合に発生します。これまでの私のコードは次のとおりです。
#include <stdio.h>
#include <string.h>
#define NULL 0
int main() {
FILE *ptdata, *ptresult;
char bin[32];
int i, r = 0, len;
ptdata = fopen("data.txt", "r");
ptresult = fopen("result.txt", "w");
if (ptdata == NULL) printf("Error cannot open file");
else {
while (fgets(bin, 32, ptdata) != NULL);
len = strlen(bin);
for (i = 0; i < len; i++) {
r = r * 2 + (bin[i] == '1' ? 1 : 0);
}
printf("%d\n", r);
fprintf(ptresult, "%d\n", r);
fclose(ptdata);
fclose(ptresult);
}
return 0;
}