2013-11-30 2 views
0

Я пытаюсь проверить имя. Пользователи должны ввести имя еще раз, когда имя уже существовало. Но программа сталкивается при запуске. Спасибо за вашу помощь!Сравнение строк в c

{ 
#define MAX 3 
char *Mystr2[40]; 
char Mystr1[40]; 
int i,k,j; 

for(i=0;i<MAX;i++) 
{ 
    printf("Enter the name:"); 
    gets(Mystr1); 

    Mystr2[j]=Mystr1;//i want to save the string into Mystr[0].[1] 

    for (j=0;j<i;j++)//Test the name whether it is same or not 
    { 
     if(strcmp(Mystr2[j],Mystr2[i])==0) 
     { 
      printf("They are the same"); 
          i--; 
          break; 
     } 
    } 
} 
return 0; 

}

+0

см. Http://www.wikihow.com/Compare-Two-Strings-in-C-Programming и: http://stackoverflow.com/questions/15430562/string-comparison-c-strcmp – yunas

+0

@yunas на основе кода, который он показал, в то время как у него есть другие проблемы, как сравнивать строки не является одним из них. – mah

+1

И не используйте 'gets'! – Kninnug

ответ

3

Ваш крах, потому что Mystr2[j]=Mystr1, я thnk вы имели в виду Mystr2[i]=Mystr1.

Логика не будет работать, так как Mystr2 всегда будет указывать на то, что находится в Mystr1 в тот момент; измените декларацию на char Mystr2[MAX][40] и strcpy() в нее.

+0

Спасибо! Я могу запустить тест. – user3041923

+0

@ user3041923: Добро пожаловать в SO! Пожалуйста, прочитайте [Помощь! Кто-то ответил на мой вопрос!] (Http://stackoverflow.com/help/someone-answers). Ваш статус подсказывает, что вы еще не читали страницу [About] (http://stackoverflow.com/about), возможно, захотите сделать это в ближайшее время. – usr2564301