2012-08-16 85 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