将文本文件中的整数存储到整数数组中

时间:2016-05-28 17:45:29

标签: c arrays

我的练习有问题,声明如下:

  • 保存名称为matriu[7][10]的矩阵,从文件中获取数字。

此处为文件的文字:matrix.txt


1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,1 ,0 ,1 ,1 ,0 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,

以下是我做的版本,但失败了。有人可以帮我解决吗?

int main()
{
    int i;
    char linea[3024];
    int j;
    FILE* file;
    file = fopen("matriu.txt", "r");
    int matriu[7][10];

    while (fgets(linea, sizeof(linea), file) != NULL) {

        char* token;

        token = strtok(linea, ",");

        printf("%s\n", token);

        while (token != NULL) {

            token = strtok(NULL, ",");

            if (token != NULL)

                matriu[i][j] = atoi(token);

            printf("%s\n", token);
        }
    }

    for (i = 0; i < 7; i++) {
        for (j = 0; j < 10; j++) {
            printf("%d\n", matriu[i][j]);
        }
    }

    return 0;
}

2 个答案:

答案 0 :(得分:0)

我通过一次读取一个字符来保存矩阵。

  • 如果扫描的字符是ActionListener'0',则我将其保存到'1'矩阵/数组中。

  • 否则我会扫描下一个角色。

这是我用来执行上述操作的代码:

matriu[7][10]

我希望你理解上面的代码,所以你的代码就是:

for(i=0;i<7;i++)
{
    for(j=0;j<10;j++)
    {
        do
        {
            // i've declared a character ch to read each character
            ch=getc(file);
        }while(ch!='0' && ch!='1'); 
        matriu[i][j]=(ch-'0');//converting char to integer
    }
}

它按预期工作,最后

  

注意:您忘记关闭代码中的文件指针

答案 1 :(得分:-1)

#include <stdio.h>
#include <stdlib.h>

#define LINE 7
#define ROW 10

int main()
{
    int i = 0, j = 0, matriu[LINE][ROW];
    char letter = ' ';
    FILE* file = fopen("matriu.txt", "r");
    if(!(file))
    {
        printf("file open ERROR!\n");
        return 1;
    }
    while(i < LINE * ROW)
    {
        letter = fgetc(file);
        if(letter != ' ' && letter != ',')
        {
            *(matriu + i) = letter - 30;//because it returns the ascii code
            i++;
        }
    }
    for(i = 0; i < LINE;i++)
    {
        for(j = 0;j < ROW;j++)
        {
            printf("%d",matriu[i][j]);
        }
        printf("\n");
    }
    system("PAUSE");
    return 0;
}