我有两个char数组:(用于清晰显示的幻数)

char Intermediary[121];
char RI[20][7];

我将中间层的内容复制到RI,代码如下:(记住每行需要一个空的除颤器(20*(7-1))=121-1)
int a = 0;
int b = 0;
int c = 0;

for( a=0; a<20; a++ )
{
    for( b=0; b<6; b++ )
    {
        RI[a][b] = Intermediary[c++];
    }

    RI[a][6] = '\0';

 }

为此,我打算使用strchr,检查例如RI[0][0]到RI[0][7]是否包含y。如果发现在该范围内找不到y,则程序应迭代到RI[1][0]和RI[1][7]之间的字符。
但是,strchr将指针作为参数,而不是char数组。
如何生成一个指针,在其中我可以遍历每一行?
另一方面,如果有人想要额外的布朗尼点,我的代码将一维数组转换为二维数组是否正确?

最佳答案

要在给定行上查找字符chr,可以使用

char *pch;

pch = strchr( RI[a], chr );
if(pch)
{
    // character found; pch is a pointer to it.
}
else
{
    // character not found
}

a是指向行的第一个元素的指针,该元素也可以表示为RI[a]
但首先,您必须修复while循环,因为它没有执行您在问题中所述的操作(为每行生成一个以空结尾的字符串)。
我建议这个固定版本,使用两个&(RI[a][0])循环重写:
for( a=0; a<20; a++ )
{
    for( b=0; b<6; b++ )
    {
        RI[a][b] = Intermediary[c++];
    }
    RI[a][6] = '\0';
 }

关于c - 如何在2D字符数组中搜索字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23743137/

10-12 14:14