2012-08-16 72 views
0

我有一个字符串,我用strtok来解析它。strstr strtok中使用的指针

然后我想从strtok的指针上使用strstr,但我一直得到一个seg故障。

对此有何想法?

char *pch,*pch1,*pch2,*pch3, 

pch=strstr(line1,key); 

      if(pch!=NULL){ 
       pch1=strstr(line1,key1); 
       pch2=strstr(line1,key2); 
       pch3=strstr(line1,key3); 

       if(pch1!=NULL && pch2!=NULL && pch3!=NULL){ 
        printf("%s",line1); 
        sym++; 

        pch2=strtok(line1," "); 

        while(pch2!=NULL){ 
         pch2=strtok(NULL," "); 
         pch3=strstr(pch2,key1); 
         printf("%s\n",pch3); 


        } 
       } 
      } 

回答

0
pch2=strtok(NULL," "); 
pch3=strstr(pch2,key1); 

你不打电话strstr之前检查pch2 != NULL。这毕竟是必然发生的,因为它是你摆脱这种循环的唯一方式。

如何:

while((pch2 = strtok(NULL," "))) { 
+0

当然!谢谢! – JupiterOrange 2012-08-16 16:32:40

+0

@ user1571767不要忘记在使用之前检查'pch3'。 – cnicutar 2012-08-16 16:34:11