2

我在从文件中读取和写入多行数据时遇到问题。问题是从文件中读取多行二进制并将其转换为十进制并将多行十进制写入新文件。我让程序将一行二进制转换为十进制没有问题,当我有多行时麻烦就来了。到目前为止,这是我的代码:

#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 回答