gpt4 book ai didi

c - 扫描成结构

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:19 24 4
gpt4 key购买 nike

我想最终将文件中的字符串插入到结构中的元素中,但无法正确插入。你能看出这里出了什么问题吗?

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;
}

最佳答案

似乎您只是缺少为 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了解更多信息。我把它留在这里是为了表达您想要实现的目标。

此外,不要忘记释放你在最后malloc的内存,并在完成后关闭文件描述符(即 fclose(fp);).

关于c - 扫描成结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28950773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com