如何将数字字符串作为C中数组中的单独整数存储在文件中

时间:2017-01-29 05:48:42

标签: c arrays readfile c-strings

我在Sender.txt中有32位作为文本文件,如

00100100101110001111111100000001

我想将每个单独的数字存储为数组中的整数。我尝试了以下代码但没有工作。

#include <stdio.h>
#include<stdlib.h>

void main()
{
  FILE *myfile;
  myfile = fopen("Sender.txt" , "r");
  char data[32];
  int i,con, data1[32];

  for(i=0;i<32;i++)
  {
    fscanf(myfile, "%1s", &data[i]);
  }

  for(i=0;i<32;i++)
  {
    con = atoi(data[i]);
    data1[i]=con;   
  }

  for(i=0;i<32;i++)
  {
    printf("%d \n", &data1[i]);
  }
}

2 个答案:

答案 0 :(得分:1)

仍然没有完全理解你努力的目的,我建议重写前两个循环:

for(i = 0; i < 32; i++)
{
    int next = fgetc(myfile);
    data1[i] = (next == '0') : 0 ? 1;   
}

此代码假定该文件有32个1或0,所有这些都在同一行,而没有别的。

这可能会被进一步压缩,可能会牺牲清晰度:

for(i = 0; i < 32; i++)
{
    data1[i] = fgetc(myfile) - '0';   
}

答案 1 :(得分:-1)

为什么不使用fgetc?此函数只读取一个Charakter并返回它。 您的代码应该如下所示:
这个错误请参阅编辑

FILE *file;
char c[32];
for(int i = 0; i < 32; i++){
    if((c[i] = fgetc(file)) == NULL)
        //then Error
}
fclose(file);

编辑:正如“alk”所指出的那样(什么是名字配对xD)if子句完全没有意义。我早上很早就道歉了。正确的代码当然应该是这样的:

FILE *file;
int data[32];    //The Question was to store the Data in an int not char like i did...
for(int i = 0; i < 32; i++)      
    data[i] = fgetc(file) - '0';
fclose(file);

祝你好运