2017-09-05 4 views
2

を与える:私は文から単語を印刷しようとしていますが、それはエラーを与えている私はCで、文から単語を印刷しようとしています++が、その私にセグメンテーションフォールト(コア・ダンプ)

Segmentation Fault (core dump)

は、それが原因ですgets()関数の使用に、またはそれは別のものですか?

void words(char* sentence){ 
    int len =strlen(sentence); 
    for(int i=0;i<len;i++){ 
     char word[100]; 
     int j=0; 
     while(sentence[i]!='\0' || sentence[i]!=' '){ 
      word[j++] = sentence[i++]; 
     } 
    word[j] ='\0'; 
    cout<<word<<endl; 
    } 
} 
int main(){ 
    char str[100]; 
    gets(str);  
    words(str); 
    return 0; 
} 
+3

Btw:C++でchar配列を使用しないでください。http://www.cplusplus.com/reference/string/string/ class – Macias

+6

'sentence [i]!= '\ 0' || sentence [i]!= '' 'は単純に' true'です。 'sentence [i]'が不可能な '\ 0'と ''''の両方であれば、それは間違いです。 –

+5

** CやC++で 'gets'を使わないでください**。これは廃止され、その後CおよびC++から削除されました。 – NathanOliver

答えて

0

メインコード自体が適切ではありません。 char str [100]; gets(str);

strへの入力が常に100になるようにする方法は、入力が100を超えるとクラッシュすることがあります。

+0

* "それはクラッシュの原因になります" * - いいえ、それは*未定義の動作を呼び出します* – UnholySheep

+0

はいそれは未定義の動作です:)あなたがアクセスしようとしているメモリがあなたのプロセスに属しているならば。プロセスよりもプロセスがクラッシュする可能性があります。 – Rohit

関連する問題