我正在尝试将输入文件中的数据存储到结构中,但我不确定我做错了什么。 这是输入文件。
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;
}
答案 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