【问题标题】:C - load txt content into two dimentional arrayC - 将文本内容加载到二维数组中
【发布时间】:2014-10-29 14:08:59
【问题描述】:

这是我的模式 txt:

##########
#1     # #
#   #    #
#     #  #
#        #
#        #
#  #2   ##
#        #
#    #   #
##########

我想在二维数组中逐行加载此行,例如 char board[10][10];

这是我的加载文件代码:

FILE *fp;
fp = fopen(file_name,"r");
do{
    for(int a=0;a<10;a++){
        for(int b=0;b<10;b++){
            fscanf(fp,"%c",&board[a][b]);
        }
    }
}while(!feof(fp));
// test print for showing into console
for(int c=0;c<10;c++){
    for(int d=0;d<10;d++){
        printf("%s",board[c][d]);
    }
    printf("\n");
}
fclose(fp);

【问题讨论】:

  • 您的偏好是什么?我的意思是您是否有任何顺序将这些信息读/写到数组中?如果没有,我建议预先分配一个大的二维数组(除非您确切知道需要读取多少个字符),执行嵌套 for 循环,并对每个字符执行 fgetc() 并将它们存储到您的数组 [i] [j ].
  • 这些模式来自一个名为“map.txt”的文件,我只是尝试创建一个简单的吃豆人游戏....我想将此文件内容加载到数组中。
  • 你试过什么?例如,您知道如何从文件中读取字符并将其打印到屏幕上吗?
  • 这是我的脚本 'FILE *fp; fp = fopen(file_name,"r"); do{ for(int a=0;a
  • 嗯? fp 没有 NULL 检查,%sboard[c][d] [假设 2D 字符数组]...???那么阅读newline呢?

标签: c arrays file io


【解决方案1】:
FILE *fp;
fp = fopen(file_name,"r");
for(int a=0;a<10;a++){
    for(int b=0;b<10;b++){
        fscanf(fp,"%c", &board[a][b]);
    }
    fscanf(fp, "%*c");//for skip newline
}
fclose(fp);
// test print
for(int c=0;c<10;c++){
    for(int d=0;d<10;d++){
        printf("%c", board[c][d]);
    }
    printf("\n");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多