我希望最终将文件中的字符串插入到结构中的元素中,并且无法正确使用它。你能看出这里有什么问题吗?
int main()
{
FILE *fp;
char file_name[10] = "map7.map";
fp = fopen(file_name,"r");
int a = 1;
int *pnumberOfRows = &a;
fscanf(fp,"%d",pnumberOfRows);
typedef struct {
bool visited;
char *cityName;
} map;
map *ver = malloc(sizeof(map)*2*(*pnumberOfRows));
fscanf(fp,"%s",ver[1].cityName);
printf("%s",ver[1].cityName);
return 0;
}
答案 0 :(得分:2)
看起来您只是缺少为char *cityName
字段分配空间,这使得fscanf
成为未分配的指针。您可以提供固定字段,例如
typedef struct {
bool visited;
char cityName[81];
} map;
最大长度为80个字符(即不包括 \0
)或事先确定文件中城市名称的长度,然后使用
ver[0]->cityName = (char*)malloc(sizeof(char)*(stringLength+1));
请注意sizeof(char) == 1
,所以请随意离开,但请参阅答案here以获取更多信息。我把它留在这里是为了表达你想要达到的目标。
此外,不要忘记free
最后的malloc
内存,并在完成后关闭文件描述符(即fclose(fp);
)。