c++ - 发送一行二维数组作为参数

标签 c++ c function arguments kernighan-and-ritchie

1234ould
1234567ould
12

我想要做的是将上面的一行二维数组作为参数传递给“strindex()”,该函数返回“ould”恰好在该行中的索引,如果不是,则返回-1 。然后将该索引值分配给数组“q[]”的元素。当所有行都完成后,然后打印所有行中最右边出现的“ould”的索引。

int strindex(char s[],char t[])
{   int i,j,k;
    for(i=0;s[i]!='\0';++i)
    {   for(j=i,k=0;t[k]!='\0'&&t[k]==s[j];k++,j++)
            ;
        if(k>0 && t[k]=='\0')
            return i;
    }
    return -1;
}

int getline(char s[],int lim)
{   int i,c;
    i=0;
    while((--lim)>0 && (c=getchar())!=EOF && c!='\n')
        s[i++]=c;
    if(c=='\n')
        s[i++]='\n';
    s[i]='\0';
    return i;
}

void main(void)
{   char line[MAXLIM],p[10][MAXLIM];
    int i=0,j=0,k=0,q[10],max;
    while((getline(line,MAXLIM))>0)
    {   for(;j<strlen(line);j++)
        {   p[i][j] = line[j];
        }
i++;
}
***max=0;
for(;k<i;++k)
{       
    q[k]=strindex(p[k],pattern);

    if(q[k]>max)
    {   
        max=q[k];
    }***
}


getch();
clrscr();

}

但是当我调试程序时,它在第一行分配 max=4 时正确运行,但在它之后,当我看到 q[k] 的值时,两行都被分配了 -1 ,因此破坏了我的程序。 重要提示: strindex() 第一个参数采用一维数组,因此我写了 p[k] 而不是 p[k][] 。 重要提示:***是程序的主要部分。

最佳答案

main 的第一个循环中将 line 复制到 p[i] 时,未设置 j为零。在第一个循环开始之前它被设置为零一次,但随后第一次复制会递增 j,并且它保持在这个递增的值,因此当下一次尝试复制行开始时它不为零。

此外,代码无法确保复制到 p[i] 中的每一行都以空字符终止。

关于c++ - 发送一行二维数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53030611/

相关文章:

c++ - 有没有办法将对象的字段隐式传递给 C++ 中的函数

function - Haskell 检查空列表

c++ - vector/数组问题,无法将索引分配给变量/无法将变量用作数组大小(索引)C++

c++ - 如何修复导致程序崩溃的错误

c++ - 海湾合作委员会 5.2.1 _GLIBCXX_USE_CXX11_ABI

c - 需要更改指针让我遇到问题

c++ - Py_Initialize 失败 - 无法加载文件系统编解码器

c++ - C 或 C++ 中的亚毫秒精度计时

c - GDB 回溯变量值

javascript - 如何比较字符串字母(javascript)