从文本文件中读取矩阵并将其存储在二维数组中

2024-03-29

我一直在尝试将矩阵输入存储在数组中的文本文件中,但它显示了特殊的输出。这是代码:

#include <stdio.h>

int main()
{
    int c, i, j, row, col, nl, cr;

    row = col = nl = cr = 0;

    FILE *fp = fopen("g.txt", "r");

    // Figure out how many rows and columns the text file has
    while ((c = getc(fp)) != EOF)
    {
        if (c == '\n')
            nl++;
        if (c == '\r')
            cr++;

        col++;

        if (c == '\n')
            row++;

       putchar(c);
    }

    col = (col - (nl + cr));
    col = (int) (col/row);

   // printf("\nnumber of rows is %d\n", row);


    // read letters into array

    char array[row][col];

    if ( fp )
       {
        for ( ;; )
              {
            c = getc(fp);
                 if ( c == EOF )
                 {
                        break;
                 }
                 if ( c != '\n' && c != '\r' )
                 {
                        array[i][j] = c;

                    if ( ++j >= col )
                        {
                            j = 0;
                            if ( ++i >= row )
                            {
                                break;
                            }
                        }
                }
            }
        fclose(fp);
    }

    for ( i = 0; i < row; i++ )
    {
            for ( j = 0; j < col; j++ )
            {
                 putchar( array[i][j]);
            }
            putchar('\n');
    }
    return 0;
}

数据文件示例:

255  50  9  50  1  50  50  1
50  255  50  50  50  50  50 50
50  50  255  50  50  50 50  50
8  50  50  255  50 50  50  50
50  50  50  50 255 50  50  50
50  50  50 50  50  255  50  50
1  50 50  50  50  50  255  50
2 50  50  50  50  50  50  255 

我的程序向我显示了这个输出:

255 50   9   50  1   50   50   1
50  255  50  50  50  50   50   50
50  50   255 50  50  50   50   50
8   50   50  255 50  50   50   50
50  50   50  50  255 50   50   50
50  50   50  50  50  255  50   50
1   50   50  50  50  50   255  50
2   50   50  50  50  50   50   255     $■( 1gÍuáþ09■   ı¤ıu"ÒávD   ê$[
►  ð²(     ♥       l    ►      ■   
  ê$[ ♥   l       ­²( O»ƒv[ 4■( Qõá
v♥   #õáv┬²║Oÿ|®v    ñ|®ve┬ív
 ■(     x■( ÿ|®v Ó²⌂    @■(  áƒv╚♀[ L
■( w¯ƒv‼   ê■( I┴ávÿ|®v↓┴áv~²║O
   Ó²⌂    \■( ■   ─ ( e┬ívÍ┬29►☺

对于显示的输入文件,但问题是对于数组输出,我不明白为什么它向我显示这些字符。


迈克尔的评论是正确的,如果它能够编译,我会感到惊讶。您需要动态分配数组,如下所示:

char **array = malloc(sizeof(char *) * row)

每行都像:

array[c] = malloc(sizeof(char) * col)

您还必须使用 free 来释放每一行和数组。

看起来您正在尝试读取和存储整数值。请记住,当您确实实现此功能时,如果是这种情况,您仍然需要转换字符值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文本文件中读取矩阵并将其存储在二维数组中 的相关文章

随机推荐