Strcmp用于二维数组

时间:2014-01-31 05:32:08

标签: c arrays multidimensional-array

假设我有一个包含3个不同单词列表的二维数组。我试图检查预定义的单词是否等于列表中的任何单词。 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;
  }
}

4 个答案:

答案 0 :(得分:2)

strcmp更改为

strcmp(message, keywords[i])

字符串比较函数需要两个字符串。 keywords[i][0]是字符串的第一个字符。所以你要比较字符串和字符。

用于发出警告的gcc编译器

  

/usr/include/string.h:143:12:注意:预期'const char *'但参数类型为'char'

代码:

#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!

答案 1 :(得分:1)

keywords[3][10]表示3个字符串数组,每个字符串的最大长度为10

因此,您正在以错误的方式访问字符串:

当您写keyword[i][0]时,它意味着0字符i的字符。
但是,你需要的只是i字符串,你不需要第二次取消引用它,即你应该使用:

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

答案 2 :(得分: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;
}

让我知道,如果出现任何问题!

答案 3 :(得分:0)

将strcmp函数更改为

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

并享受:)