下面的代码在命令行中给出了 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;
}
最佳答案
您没有指定文件的结构,所以我假设您不小心读入了任何存在的空白字符(例如空格、换行符、制表符等)。
使用 "%c"
代替 fscanf
。请注意 '%'
之前的额外空格,这很重要。它告诉 fscanf
忽略任何空白字符。
关于c - 从c中的文本文件中读取字符并存储在二维数组中问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40623800/