在C中读写多行数据文件

时间:2013-04-09 23:12:29

标签: c file binary decimal

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

#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;
}

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您的while循环已提前终止

while(fgets(bin,32,ptdata)!=NULL);
                                ^^^