如何从c中的输入文件中读取结构信息

时间:2017-12-02 20:15:08

标签: c arrays file input structure

我正在尝试将输入文件中的数据存储到结构中,但我不确定我做错了什么。 这是输入文件。

4 2     1 1     3 1

1 1     2 1     3 1

1 1     5 3     1 1

每个中的第一个数字应存储为沙子,第二个数字应存储为宝藏。

到目前为止,这是我的代码:

#include <stdio.h>
#include <string.h>

#define PIRATES
#define MAP_SIZE 3

//structures
struct pirate {
    int dig;
    int carry;
};

struct map {
    int sand;
    int treasure;
};


//functions
int hours_crew ();
void scan_file ();

//main function
int main() {
    FILE * ifp = NULL;
    struct map map[MAP_SIZE][MAP_SIZE];
    int i, j;
    char filename[30];

    printf("You have arrived at Treasure Island!\n");

    while (ifp == NULL) {
        printf("What is the name of your map?\n");
        scanf("%s", &filename);

        ifp = fopen(filename, "r");
    }

    for(i=0; i<MAP_SIZE; i++) {
        for (j=0; j<MAP_SIZE; j++) {
            fscanf(ifp, "%d", &map[i][j].sand);
            fscanf(ifp, "%d", &map[i][j].treasure);
        }
    }

    for(i=0; i<MAP_SIZE; i++) {
        for (j=0; j<MAP_SIZE*2; j++) {
            printf("%d", map[i][j].sand);
            printf("%d\n", map[i][j].treasure);
        }
    }


    fclose(ifp);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

你的代码看起来很好,所以我决定复制它,看看出了什么问题。

订单非常好,只需添加一些评论,这将是一项专业工作。

请下次阅读有关how to write a question的说明,并解释更多问题。

在进入结构问题之前,第34行就会出现警告:

scanf("%s", &filename);
  

格式指定类型&#39; char &#39;但是参数的类型为&#39; char()[30]&#39;

如果将其更改为:

,则可以轻松修复
scanf("%s", filename);

现在,据我所知,结构没有问题。

如果您只想更改打印:

for (j=0; j<MAP_SIZE*2; j++) {

为:

for (j=0; j<MAP_SIZE; j++) {

看起来很棒。

GL