假设我有一个包含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;
}
}
答案 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))
}
并享受:)