c - 从c中的文本文件中读取字符并存储在二维数组中问题

标签 c arrays file matrix multidimensional-array

下面的代码在命令行中给出了 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/

相关文章:

javascript - JQuery:由于 .replaceWith 操作,条件无法完成

javascript - jQuery 是否保证与数组或对象的扩展原型(prototype)兼容?

python - Numpy savetxt 将一维数组保存为列

python - 如何在 Python 3 中将二进制流缓冲区写入文件而不显式读取它?

c - 完美的力量

无法使用 SSL 支持连接到 RabbitMq-c

c - 警告 : assignment from incompatible pointer type [enabled by default]

java - 在字节数组中存储对象引用

javascript - HTML 动态添加文件输入不起作用

c - 通过网页获取ini文件的问题