2012-01-31 30 views
2

私はstrtokの機能を模倣しようとしていましたが、セグメント化エラーが発生しました。ここで私を助けてください。ここでこのコードで何が問題になっていますか?

は私のコードです:

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int main(int argc, char argv[]) 
{ 
    int i=0; 
    char c[]="get the hell out of here"; 
    char *p; 
    char *temp=(char *)malloc(100); 
    while(c[i]!='\0') 
    { 
     if(c[i]!=' ') 
     { 
      *temp=c[i]; 
      temp++; 
      i++; 
     } 
     else 
     { 
      *temp='\0'; 
      printf("printing tokenn"); 
      puts(temp); 
      i++; 
      temp=""; 
     } 
    } 
    return 0; 
} 
+2

* void main * !!!! – dreamlax

+1

@dreamlax void mainは実際に大丈夫ですが、Shashankは '#include'をコードに移動して適切にフォーマットできますか?そして、 'temp =" ";'行の意味は? – Vyktor

+0

@Vyktor: 'void main'は実際には動作するかもしれませんが、合法ではありません。 – jamesdlin

答えて

8
temp=""; 

これは障害にあなたがそれを変更しようとする次の時間をリードする、変更不可能なメモリを指すようにtempの原因となります。 tempmallocから得た値に復元したかった(保存するのを忘れた)。

関連する問題