0

我的文本文件如下:

随机词//这仅在顶部出现一次

职业1

1 2 3 4 5

6 7 8 9 10

职业2

11 12 13 14 15

16 17 18 19 20

我在输入时遇到了一些问题,想知道您是否可以查看我的代码。

typedef struct foo
{
    char occupation[256]; 
    int numbers[limita][limitb];
}FOO;

void function(FOO input[]);

int main()
{
    FOO input[limit];
    function(input);
    return 0;
}

void function(FOO input[])
{
    FILE* file;
    file = fopen("textfile.txt","r");
    int a=0; int b =0; 
    char temp[81];
    char randomwords[81];

    while(fgets(temp,sizeof(temp)-1,file))
    {
        sscanf(temp, "%[^\n] %[^\n] %d", randomwords,&input[a].occupation[a], &input[a].numbers[a][b]);
        a++;
    }
}

所以我尝试打印(使用 printf)随机单词和职业,但无济于事。我认为我根本没有正确使用数字,因为它必须是一个二维数组并且似乎没有改变列。

我非常感谢朝着正确方向迈出的一步/一些帮助。请简单说明。非常感谢。

编辑:technomage 提出了一个有趣的观点,即我在做什么和我想要什么。我不确定如何改变他的建议。

4

1 回答 1

0

你可能想做这样的事情。此实现假定输入文件中没有空行。这里有很多硬编码,你可能想让它变得更好。我希望这可以帮助你...

typedef struct foo
{
    char occupation[256]; 
    int numbers[2][5];
}FOO;

void function(FOO input[]);

void function(FOO input[])
{
    FILE* file;
    file = fopen("textfile.txt","r");
    int a = 0, count, i; 
    char temp[81];
    char randomwords[81];

    if (file == NULL)
    {
        return;
    }

    fscanf(file, "%[^\n]\n", randomwords);
    printf("%s\n", randomwords);
    while (feof(file) != EOF)
    {
        i = 0;
        i = fscanf(file, "%[^\n]\n", input[a].occupation);
        if (i == -1)
            break;

        for (count=0; count < 5; count++)
        {
            i = 0;
            i = fscanf(file, "%d", &(input[a].numbers[0][count]));
        }

        for (count=0; count < 5; count++)
        {
            i = 0;
            i = fscanf(file, "%d", &(input[a].numbers[1][count]));
        }

        a++;
        i = 0;
        i = fscanf(file, "\n");
        if (i == -1)
           break;
    };
    fclose(file);
}

int main(int argc, char *argv[], char *envp[])
{
    int     i, j, count;
    FOO input[10];

    function(input);

    for (count = 0; count < 2; count++)
    {
        printf("%s\n", input[count].occupation);
        for (i = 0; i < 2 ; i++)
        {
            for (j = 0 ; j < 5 ; j ++)
            {
                printf ("%d ", input[count].numbers[i][j]);
            }
            printf ("\n");
        }
        printf ("\n");
    }
}
于 2013-06-21T03:32:40.040 回答