[英](C) Strange crash when using feof
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是(字符*)。 您还想知道什么? 在这部分之前,一切都很好。 我猜想,我遇到访问冲突错误,然后程序崩溃了。 使用调试器,我发现在完成sscanf之后, 站点地址会发生更改。
如果(有效地,我知道这是非法声明,但仅用于说明):
char* tempQuestion.header;
然后,在写入header
之前,它必须指向有效的内存,否则该行为是不确定的,并且可能是feof
看到的行为的原因。 在sscanf
使用之前,要更正malloc
为header
足够的内存。
同样,如果strstr
返回NULL
怎么办? 这将传递给sscanf
,后者将取消引用它,从而导致未定义的行为(再次)。
摘要:
header
指向有效内存 strstr
不返回NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.