繁体   English   中英

一次读取1和0的文件

[英]Reading file of 1's and 0's one at a time

在C ++中,我尝试将以下文件读入数组:

0000000000
0000000000
0000000000
0001110000
0001010000
0001110000
0000000000
0000000000
0000000000
0000000000

我正在使用以下内容将每个int放入数组中:

  X = (int* )malloc(n*n*sizeof(int));
  for (int i = 0; i<(n*n); i++){
    j = read.get();
    if (isdigit(j)){
        *(X+i) = j - '0';
    }
  }

但是当我将数组输出到文件时,得到以下输出:

0000000000
0000000000
0000000000
0000001110
0000000101
0000000011
1000000000
0000000000
0000000000
0000000000

而且我不认为我输出数组的方式有什么问题:

for (int i = 0; i<(n*n); i++){
      write << *(X+i);
      if (((1+i) % n) == 0){
        write << endl;
      }
}

我尝试阅读以下内容,但似乎无效:

for (int i = 0; i<(n*n); i++)
        {
            read >> *(X+i);
        }

问题是,即使isdigit(j)为false,您也要递增i 因此,您将使文件中与换行符相对应的数组元素保持未初始化状态,并且由于要计算换行符,因此也不会读取所有数字。 您需要将增量放在if

for (int i = 0; i < n*n; ) {
    char j = read.get();
    if (isdigit(j)) {
        X[i++] = j - '0';
    }
}

顺便说一句,如果您使用指针作为数组,请使用数组语法X[index]而不是*(X+index) 它使意图更清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM