代码之家  ›  专栏  ›  技术社区  ›  Momo

如何在c语言中从输入文件中读取结构信息

  •  0
  • Momo  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  0
  •   Yonlif    7 年前

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

    真的很好的订单,只是添加一些评论,这将是一个专业的工作。

    请下次阅读有关 how to write a question 并进一步解释问题所在。

    无论如何,在讨论结构问题之前,第34行会出现一个警告,即:

    scanf("%s", &filename);
    

    格式指定类型“char” '但参数的类型为'char'( )[30]'

    如果将其更改为:

    scanf("%s", filename);
    

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

    如果您将打印更改为:

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

    收件人:

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

    它看起来会很棒。

    德国劳埃德船级社