我试图检查某个角色是否属于二维字符数组,但我的代码并不能适用于所有角色。我认为我的指针出了问题。例如,如果我改变了' b'到了' r'它没有正常工作。 提前谢谢。
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *pch;
char matrix[2][2]={
"best","cover",
"orbit","boost"
};
pch=strchr(matrix,'b');
if (pch==NULL)
{
printf ("not exists");
}
else
{
printf("exists");
}
return 0;
}
答案 0 :(得分:1)
您的代码中存在三个问题。
<stdio.h>
才能使用printf
。此处没有足够的内存分配:
char matrix[2][2]={
"best","cover",
"orbit","boost"
};
您为两个字符串提供空间,每个字符串可容纳1个字符(结尾处为NUL终止符+1)。
使用以下方法修复它:
char matrix[4][6]={
"best","cover",
"orbit","boost"
};
六个是字符串中的最大字符数+最后一个\0
的字符数,四个是二维数组中最大字符串数。
strchr
期望第一个参数为const char*
类型。您提供类型为matrix
的参数char(*)[2]
。您需要循环并查找该字符是否在char
s数组数组的每个字符串中。解决这些问题后,您的代码将是:
#include <stdlib.h> // Not required
#include <string.h> // For strchr()
#include <stdio.h> // For printf()
int main(int argc, char *argv[]) {
char *pch;
char matrix[4][6]={
"best","cover",
"orbit","boost"
};
int i;
for(i=0;i<4;i++)
{
pch=strchr(matrix[i],'b');
if (pch==NULL)
{
printf ("not exists in %s\n",matrix[i]);
}
else
{
printf("exists in %s\n",matrix[i]);
}
}
return 0;
}