我有一个文件(.dat和.txt格式),其中包含行和列形式的数字(整数)。我需要阅读 此文件中的数字(整数)。该数据将存储在2D阵列中。这个数组在我的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");
}
}
感谢大家的回应,但问题还有别的...... 使用以下代码为2-d数组分配内存:
#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");
但是,我仍然无法将2-D条目输入我的变量'array'。
P.S。 “homer_matrix.txt”是使用matlab通过以下命令生成的:
CODE:
A=imread('homer.jpg');
I=rgb2gray(A);
dlmwrite('homer_matrix.txt',I);
此代码将生成文件'homer_matrix.txt',其中包含768 X 1024条目表格中图像的灰度值。
答案 0 :(得分:2)
int i = 0,j = 0,array[][];
此处的array
声明无效。
答案 1 :(得分:1)
homer = fopen("homer_matrix.dat","w");
用标志“w”打开文本文件进行阅读并不是一个好主意。尝试使用“rt”代替。
答案 2 :(得分:1)
以下代码适合您。 它将精确计算文本文件中的行数和列数。
do { //calculating the no. of rows and columns in the text file
c = getc (fp);
if((temp != 2) && (c == ' ' || c == '\n'))
{
n++;
}
if(c == '\n')
{
temp =2;
m++;
}
} while (c != EOF);
fclose(fp);
答案 3 :(得分:0)
您忘记为阵列分配内存
int i = 0,j = 0,array[][];
这应该是
#define MAXCOLS 1000
#define MAXROWS 1000
int i = 0,j = 0,array[MAXROWS][MAXCOLS];