我正在阅读2个不同的文件并在每个文件上运行此功能。 文件格式为
2
3
8 7 6
5 4 3
我正在使用的代码是
void readFile(char txtName[], int k, int matrix){
int c = 0;
int i = 0;
int j = 0;
int x = 0;
//Open file
FILE *txt;
txt = fopen(txtName, "r");
//Go till the end of the file
while( fscanf(txt, "%d", &c) != EOF ){
//For assigning matrix A
if(matrix == 1){
//Used to skip over the first 2 inputs.
if(x > 1){
//Got to the end of the row increase to the next row.
if(j == k){
i++;
j = 0;
}
//Assiging c to A
A[i][j] = c;
printf("%d A in matrix %d %d\n", A[i][j], i, j);
j++;
}
x++;
}
}
fclose(txt);
}
int main( int argc, char *argv[] ) {
readFile(argv[1], k, 1);
int m = 2;
int k = 3;
int i;
int j;
for(i=0; i < m; i++){
for(j=0; j < k; j++){
printf("%d", A[i][j]);
}
printf("\n");
}
}
我正在尝试使用该文件初始化一个二维数组,以便它是一个矩阵。文件的第一个值是m,第二个是k。所以从文件发布。它是一个2x3矩阵,其值低于它。 A是设置为A [2] [3];
的全局数组我遇到的问题是当我运行此代码时,我的数组出现了
8 7 5
5 4 3
我不知道为什么。我已经为调试放了很多print语句。当涉及到i = 0和j = 2时,它打印出6.但是当我在函数A [0] [2] = 5之后打印数组时,我正在制作的错误在哪里?
答案 0 :(得分:0)
您的问题可能与while( fscanf(txt, "%d", &c) != EOF )
有关。只需尝试使用while( fscanf(txt, "%d", &c))
并检查。