我正在开发一个小型私有项目,该项目从html页面源读取一些链接。我逐行读取html文件,然后检查该行是否包含" data-cfsrc",它始终位于我想要读取的链接之前。这很好用,直到我尝试释放指向关键字(" data-cfsrc")开始的指针。
我已尝试在多个点上释放它,只有当我还没有做任何事情时它才有效。
这是我的代码:
FILE *fp_w, *fp_r;
fp_r = fopen("page.html","r");
fp_w = fopen("bg_list.txt","a");
char line[1024],img[512],c;
//char *imgpoint = malloc(sizeof(char)*512);
char *imgpoint;
int i,imgcount = 0;
while(imgcount<15){
// read line
i = 0;
do{
c = fgetc(fp_r);
line[i] = c;
i++;
}while(c!='\n');
line[i] = '\0';
if(strstr(line,"data-cfsrc") != NULL){
imgpoint = strstr(line,"data-cfsrc");
strcpy(img,imgpoint);
c = 0;
for(i=0; c!=34; i++){
img[i] = img[i+12];
c = img[i+13];
}
img[i] = '\0';
fprintf(fp_w,"%s\n",img);
imgcount++;
printf("imgcount = %d\n",imgcount);
}
}
fclose(fp_r);
fclose(fp_w);
//free(imgpoint);
return 0;
编辑:如上所述,我完全删除了free(),但现在我的程序在调用return时仍会导致Segmentation错误。
编辑2:完全省略了指针指针。一切仍然有效,但返回时仍然会出现Segmentation故障。