0
    char *headerString = strstr(line, "...\">");
    printf("%d", feof(site));                                   //all is ok
    sscanf(headerString, "...\">%[^<]", tempQuestion.header);
    printf("%d", feof(site));                                   //crash

我完全不明白为什么它会崩溃。我的意思是,sscanf 对 FILE *site 没有任何作用,为什么它可能会崩溃?

编辑: tempQuestion.header 是(char *)。你还想知道什么?这部分之前的一切都很好。我想,我收到访问冲突错误,然后程序崩溃。使用调试器我发现 sscanf 完成后站点地址更改。

4

1 回答 1

1

如果(实际上,我知道这是非法声明,但只是为了说明):

char* tempQuestion.header;

然后在写入之前header必须指向有效内存,否则行为未定义,可能是在feof. 在使用 in 之前更正malloc足够的内存。headersscanf

同样,如果strstr返回NULL怎么办?这将被传递给sscanf它将取消引用它导致未定义的行为(再次)。

概括:

  • 确保header指向有效内存
  • 确保strstr不返回NULL
于 2013-05-25T18:10:24.567 回答