【发布时间】:2017-03-30 03:49:48
【问题描述】:
下面的代码在命令行中给出了 3 个参数,即文本文件、矩阵中的行数和矩阵中的列数。我传入的文件有 10 行 12 列。如果我在命令行中传递 10(行)和 12(列),由于某种原因,它会输出到第 8 个索引行和第 7 个索引列。如果我通过 11 和 13,它将输出完整的矩阵加上最后的 @ 符号。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *f;
int i = 0,j = 0;
if(argc != 4)
{
printf("You did not enter a file name and/or rows/columns.");
}
else
{
int rows = atoi(argv[2]) ;
int columns = atoi(argv[3]) ;
char matrix[rows][columns];
f = fopen(argv[1], "r");
if(f == NULL)
{
printf("Invalid File");
}
else
{
for(i = 0 ; i < rows ; i++)
{
for(j = 0 ; j < columns ; j++)
{
fscanf(f,"%c",&matrix[i][j]);
printf("%c", matrix[i][j]);
}
}
}
fclose(f);
}
return 0;
}
【问题讨论】:
-
fscanf(f,"%c",&matrix[i][j]);-->fscanf(f," %c",&matrix[i][j]);?显示文件示例。 -
是的,非常感谢。出于好奇,这有什么不同?
-
跳过前面的空格(换行符)。
标签: c arrays file matrix multidimensional-array