2014-01-31 6 views
0

Допустим, у меня есть двумерный массив, содержащий список из трех разных слов. Я пытаюсь проверить, соответствует ли предопределенное слово любому из слов в списке. Каким будет формат функции strcmp?Strcmp для двумерного массива

Пример:

char message[5] = {"hello"}; 

char keywords[3][10] = {"dolphin", 
         "rhino", 
         "hello" }; 

for(int i = 0; i < 3; i++) { 
    for(int j = 0; j < 5; j++) { 
    if(strcmp(message, keywords[i][0]) == 0) { 
     printf("Match Found!"); 
     break; 
    } 
    else 
     break; 
    } 
} 

ответ

2

Измените ваш strcmp на

strcmp(message, keywords[i]) 

Строка Функция сравнения необходимость две строки. keywords[i][0] - это первый символ строки. Таким образом, вы сравниваете строку с символом.

GCC компилятор используется, чтобы дать предупреждение, как

/usr/include/string.h:143:12: Примечание: ожидаемый 'константный символ *', но аргумент типа 'символ'

Код:

#include <sys/time.h> 
#include <sys/resource.h> 
#include <stdio.h> 
#include <string.h> 

int main(){ 
char message[5] = {"hello"}; 
char keywords[3][10] = {"dolphin", 
         "rhino", 
         "hello" }; 

for(int i = 0; i < 3; i++) { 
    for(int j = 0; j < 5; j++) { 
     printf("Check 1 : %c\n", keywords[i][0]); 
     printf("check 2 : %s\n", keywords[i]); 
     //printf("%s\n", keywords[i][0]);// try this you will get error 
     if(strcmp(message, keywords[i]) == 0) { 
      printf("Match Found!\n"); 
      break; 
     } 
     else 
      break; 
    } 
} 

return 0; 
} 

Выход:

Check 1 : d 
check 2 : dolphin 
Check 1 : r 
check 2 : rhino 
Check 1 : h 
check 2 : hello 
Match Found! 
+0

Очень хорошим объяснением ... –

1

keywords[3][10] означает массив строк 3 каждый из максимальной длины 10.

Таким образом, вы получаете доступ к струнный неправильный путь:

Когда вы пишете keyword[i][0] это означает 0-й символ i-й строки.
Однако то, что вам нужно, это только i-й строки, вам не нужно разыменовать него во второй раз, то есть вы должны использовать:

if(strcmp(message, keywords[i]) == 0)

0

Таким образом, вы можете сравнить две строки.

#include<stdio.h> 
#include<string.h> 
#include<conio.h> 
    int main(){ 
    char message[6] = {"rhino"}; 
    char keywords[3][10] = {"dolphin", 
          "rhino", 
          "hello" }; 

     for(int i = 0; i < 3; i++) { 
      for(int j = 0; j < 5; j++) { 

       if(strcmp(message, keywords[i]) == 0) { 
         printf("Match Found!"); 
       printf("\n %s Match with %s",message, keywords[i]); 
         break; 
       } 
       else 
       break; 
     } 
     } 
    getch(); 
    return 0; 
} 

Сообщите мне, если что-нибудь пойдет не так!

0

изменить функцию STRCMP на

for(i=0;i<=5;i++) 
     { 
      if(strcmp(&keybord[i][0],message)) 
     } 

и наслаждайтесь :)

Смежные вопросы