2016-12-10 44 views
0

我想學習c中的字符串。我寫了這個程序。我想這個程序將終止一個特定的單詞(輸入單詞後按ENTER鍵)。它編譯得很好,但經過給定的輸入後,當我按下輸入時,顯示給我這個消息:test.exe已停止工作。這裏「測試」是我的程序的名稱。 請幫我理解這一點。我如何在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

兩個主要錯誤:'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]); 
} 

替代:如果你想聲明strchar **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

請注意,它是[多餘的並且潛在危險的是將malloc和朋友的結果放在C中](http://stackoverflow.com/q/605845/253056)。 –

+1

@PaulR感謝兄弟:) –

+0

感謝您的幫助兄弟 – Sujan