2

ファイルから複数行のデータを読み書きするのに問題があります。問題は、ファイルから複数行のバイナリを読み取り、それを 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;
}
4

2 に答える 2

2

エラーは次のとおりです。

while(fgets(bin,32,ptdata)!=NULL); 
                               //^^^You have semicolon 
                              //here which ends the while loop

次のことを行う必要があります。

 while(fgets(bin,32,ptdata)!=NULL){
    len = strlen(bin);
    r = 0 ;
    for(i = 0; i < len; i++)
    {
       r = r * 2 + (bin[i] == '1' ? 1 : 0);
    }

    printf("%d\n",r);
    fprintf(ptresult,"%d\n",r);
}
于 2013-04-09T23:15:25.543 に答える
0

while ループが途中で終了しました

while(fgets(bin,32,ptdata)!=NULL);
                                ^^^
于 2013-04-09T23:15:06.450 に答える