c - 用C语言读写多行数据文件

标签 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;
}

最佳答案

这是错误:

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

关于c - 用C语言读写多行数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914196/

相关文章:

C函数指针转换为另一个函数指针

c - C 中的数组大小错误

c - undefined reference `gzopen` 错误

linux - 如何解决 Linux 中损坏的文本文件?

CUDA NVCC编译器二进制变量

c - 如何将二进制文件中的结构写入另一个二进制文件中的嵌套结构?

java - 从 file.getpath() Java 中删除一些文件夹

java - 有没有办法在java中获取属性文件中某些过滤键的列表?

用于在二叉树中查找最大路径的Python算法无法按预期工作

将值转换为二进制值并将它们存储在数组中