2016-12-10 14 views
0

私は文字列をcで学習しようとしています。私はこのプログラムを書いた。私はこのプログラムが特定の単語について終了するようにしたい(単語を入力した後にEnterを押す)。そのコンパイルはうまくいっても、入力を押すと入力が終わったら、私にこのメッセージが表示されます:test.exeが動作を停止しました。"test"は私のプログラムの名前です。 これを理解するのを手伝ってください。Cで複数の文字列を入力するにはどうすればよいですか?

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

int main() 
{ 
    int i, j; 

     char *str[10]; 
     for(i=0; i<10; i++) 
     { 
      //gets(str[i]); 
      scanf("%s",str[i]); 
      if(str[i]=="man") break; 
     } 


     for(j=0; j<10; j++) 
     { 
      printf("%s\n",str[j]); 
     } 

    return 0; 
} 
+2

2つの大きなバグ: 'str'は初期化されておらず、' == 'を使って文字列を比較することはできません。 –

答えて

1

Cの文字列を比較するには、strcmp機能を使用できます。例:

if(strcmp(str[i],"man") == 0){ 
    # write your code here 
} 

初期化のために、次のようにします。

char *str[10]; 
for(i=0; i<10; i++){ 
    str[i] = malloc(sizeof(char) * 1024); 
} 

次のようにすることもできます。

char str[10][1024]; 
for(i=0; i<10; i++){ 
    scanf("%s", str[i]); 
} 

代替:あなたはchar **strとしてstrを宣言する場合は、次のアプローチに従うことができます。

char **str = malloc(10*sizeof(char*)); 
for(int i=0; i<10; i++){ 
    str[i] = malloc(sizeof(char) * 1024); // buffer for 1024 chars 
} 
+1

Cでmallocとfriendsの結果をキャストすることは冗長であり、潜在的に危険であることに注意してください(http://stackoverflow.com/q/605845/253056)。 –

+1

@PaulRありがとうbro :) –

+0

あなたの助けの兄弟のおかげで – Sujan

関連する問題