2016-06-23 22 views
-5

strcmp()が原因であると考えられます。私はこれまでにいろいろ試してみましたが、これは最新のものです。私の目的は、配列のインデックスを取得して、switch文を実行してコードを実行できるようにすることです。私は「あなたはそれをすることはできません」と期待していますが、どんな助けもありがたいです。strcmpでセグメンテーション違反が発生する理由

ビッグ絵が

int main(){ 
char *cmd = "Ping"; 
char *names[3]={"Ping","Stop","Go"}; 

int index = 3; 
int i; 
char *test; 

for (i = 0; i < 44; i++) 
{ 
    test = names[i]; 
    if (!strcmp(cmd,test)) 
    { 
     index = i; 
    } 
} 
printf("%s is index of %d\n",cmd,index);} 
...複数の「機能」を持っているし、そうでpingを実行します(「ピング」)utilのようにそれを呼ぶだろう「ユーティリティ」ファイルにコードのこのスニップを組み込むことです
+6

3の代わりに44個の要素をループしているので、 –

+0

病気の編集では、スイッチに44個のアイテムがありますが、私はそれを投稿して愚かにしました。 – Kyle

+0

それは3のためにsegfaultですか?私はそうは思わない。 –

答えて

1

なぜ44回ループするのですか?しかし、私はループの中で44から3に変更したときに動作します。

for (i = 0; i < 3; i++) 

あなたのコンパイラにもよりますが、44の反復ウィンドウの場合、メッセージアプリケーションが応答しません。

+1

彼は答えた数分前に問題を修正しました。 – Barmar

+0

ご意見ありがとうございます。配列に45要素を追加し、ループを44回実行しました。できます。私はWindows 10でDev c/C++コンパイラを使用しています。 – denis

+0

@denis: '44'を' 3'に変更する方が簡単でした。とにかく、その質問は、それ以上の情報なしに話題外です。 – Olaf

関連する問題