C 检查字符二维数组中是否存在字符
我试图检查一个字符是否属于二维字符数组,但我的代码不能适用于所有字符。我认为我的指针出了问题。例如,如果我将“b”改为“r”,它就不能正常工作。 提前谢谢C 检查字符二维数组中是否存在字符,c,arrays,pointers,C,Arrays,Pointers,我试图检查一个字符是否属于二维字符数组,但我的代码不能适用于所有字符。我认为我的指针出了问题。例如,如果我将“b”改为“r”,它就不能正常工作。 提前谢谢 #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char *pch; char matrix[2][2]={ "best","cover", "orbit","boos
#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;
}
#包括
#包括
int main(int argc,char*argv[]){
char*pch;
字符矩阵[2][2]={
“最佳”、“封面”,
“轨道”,“助推”
};
pch=strchr(矩阵,'b');
如果(pch==NULL)
{
printf(“不存在”);
}
其他的
{
printf(“存在”);
}
返回0;
}
您的代码中有三个问题
printf
,您需要包括
char matrix[2][2]={
"best","cover",
"orbit","boost"
};
您可以为两个字符串提供空间,每个字符串可以容纳1个字符(+1表示末尾的NUL终止符)。使用以下方法修复它:
char matrix[4][6]={
"best","cover",
"orbit","boost"
};
六是字符串中的最大字符数+结尾处\0
的一个,四是2D数组中的最大字符串数strchr
要求第一个参数的类型为const char*
。您可以给出参数矩阵
,该参数的类型为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;
}
#包含//不需要
#包括//用于strchr()
#包括//用于printf()
int main(int argc,char*argv[]){
char*pch;
字符矩阵[4][6]={
“最佳”、“封面”,
“轨道”,“助推”
};
int i;
对于(i=0;i不正确的矩阵创建,我认为您需要二维字符数组,或二维字符串数组?在C中,一般建议是避免使用二维数组,并始终使用1D数组,可能是char-matrix[2][6]
->char-matrix[4][6]
?char-matrix[2][6]
(或[4][6]
)我认为这是错误的,数组初始化器和问题标题中的“二维”似乎OP想要一个二维数组char*
@luk32,是的。Thanks@schnaaderOP说的是“二维字符数组”,但我不确定OP自己是否知道他们想要什么…@schnaader,我也支持luk32,认为OP不知道什么是什么,他/她想要什么。