扫描结构

时间:2015-03-09 20:02:10

标签: c

我希望最终将文件中的字符串插入到结构中的元素中,并且无法正确使用它。你能看出这里有什么问题吗?

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

1 个答案:

答案 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);)。