(C)如何读取长度未知,没有空格的矩阵?

问题描述 投票:-1回答:1

。txt文件如下所示:

1,12,5,14,0
4,6,2,3,24
1,2,3,4,5

每行的长度相同,但是未指定,有多少行,以及多长时间。(最大尺寸为20 * 20)我需要将它们读取到20 * 20数组中,以便如果该行只有2个数字长,则该数组的其余部分为空。

我如何做到这一点,当文件中包含换行符时,不包括','-s,而从数组的下一行开始?

这是我的尝试:

int matrix[20][20];

for (int i=0; i<19; i++){
    for (int j=0; j<19; j++){
        fscanf(be, "%d,", &matrix[i][j]);
    }
    fscanf(be, "\n");
}

Ps:只允许使用stdio.hstdlib.h

c arrays matrix scanf
1个回答
0
投票

读取未指定长度的行可以使用fgetc来逐字符读取。对于您的情况,必须检查每个字符是否满足以下条件:

  • 如果看到',',就看到一个数字;

  • [如果看到'\n',则显示为数字,则显示为一行。

  • 您跳过每个非数字字符;

  • 您将数字放在一个小的临时缓冲区中。看到数字后,可以使用atoi;

  • 进行转换
  • 如果您不被允许使用atoi,请为您看到的每个数字使用number= number*10 + c-'0';来执行c

© www.soinside.com 2019 - 2024. All rights reserved.