在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);
}
答案 0 :(得分:4)
问题在于,即使i
为假,您仍要递增isdigit(j)
。因此,您将使文件中与换行符相对应的数组元素保持未初始化状态,并且由于要计算换行符,因此也不会读取所有数字。您需要将增量放在if
内。
for (int i = 0; i < n*n; ) {
char j = read.get();
if (isdigit(j)) {
X[i++] = j - '0';
}
}
顺便说一句,如果您使用指针作为数组,请使用数组语法X[index]
而不是*(X+index)
。它使意图更清晰。