//.......p1也行*p1也行
for (i = 0; *p1; i++) {
p1 = strstr(p, "href=");
if (p1 == NULL)
fprintf(stderr, "Failed to find item %d\n", i);
//如果for(int = 0; p1;i++)的话,且p1==NULL那么下列语句一样会被执行
p1 += 7;
p2 = strstr(p1, "target");
if (p2 == NULL)
fprintf(stderr, "Failed to find target %d\n", i);
p2 -= 2;
//这什么意思?如果i大于9你的程序到这会崩溃
strncpy(item[i], p1, abs(p1-p2));
p = p1;
}
注意在使用strstr函数时,对参数是有限制的;如果有参数为null,则必然出现segment error。
你的程序就是出现了此情况。