我有一个文件(.dat 和 .txt 格式),其中包含行和列形式的数字(整数)。我需要从此文件中读取数字(整数)。该数据将存储在二维数组中。这个数组是在我的 C 程序中定义的。我曾尝试使用 C 中的文件处理来完成此操作,但它并没有读取整个文件。程序在文件中的某些数据处突然停止并退出程序。以下是我用于此的 C 代码:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#define EOL '\n'
int main(){
int i = 0,j = 0,array[][]; //i is row and j is column variable, array is the target 2d matrix
FILE *homer;
int v;
homer = fopen("homer_matrix.dat","w"); //opening a file named "homer_matrix.dat"
for(i=0;;i++)
{
for(j=0;;j++)
{
while (fscanf(homer, "%d", &v) == 1) //scanning for a readable value in the file
{
if(v==EOL) //if End of line occurs , increment the row variable
break;
array[i][j] = v; //saving the integer value in the 2d array defined
}
if(v==EOF)
break; //if end of file occurs , end the reading operation.
}
}
fclose(homer); //close the opened file
for(i=0;i<=1000;i++)
{
for(j=0;j<=1200;j++)
printf(" %d",array[i][j]); //printing the values read in the matrix.
printf("\n");
}
}
谢谢大家的回复,但问题是别的......使用以下代码为二维数组分配内存:
#define ROW 512
#define CLMN 512
for(i = 0; i < ROW; i++)
{
for(j = 0; j < CLMN; j++)
{
array[i][j] = 0;
}
}
我还在以下代码中将权限修改为“r”。
homer = fopen(" homer_matrix.txt" , "r");
但是,我仍然无法将二维条目放入我的变量“数组”中。
ps “homer_matrix.txt”是使用matlab通过以下命令生成的:
代码:
A=imread('homer.jpg');
I=rgb2gray(A);
dlmwrite('homer_matrix.txt',I);
此代码将生成文件“homer_matrix.txt”,其中包含 768 X 1024 条目形式的图像灰度值。