C 在二维字符数组中搜索单词

C 在二维字符数组中搜索单词,c,arrays,C,Arrays,给定一个大小为100 x100个字符的二维数组和一个单词(1D字符数组),在二维数组中查找给定单词的匹配项(仅从左到右水平搜索) 输出: pattern found at 0, 5 pattern found at 1, 4 首先,不能像使用char-Word[4]=“BOOK”那样将字符数组初始化为字符串这必须是字符字[4]={'b','o','o','k'}这同样适用于命名为数据的二维数组 所以这里是你将如何做这样一件事。我添加了//注释进行解释,但总体思路是将数组转换为字符串,因为在定位

给定一个大小为100 x100个字符的二维数组和一个单词(1D字符数组),在二维数组中查找给定单词的匹配项(仅从左到右水平搜索)

输出:

pattern found at 0, 5
pattern found at 1, 4

首先,不能像使用
char-Word[4]=“BOOK”那样将字符数组初始化为字符串这必须是
字符字[4]={'b','o','o','k'}这同样适用于命名为数据的二维数组

所以这里是你将如何做这样一件事。我添加了//注释进行解释,但总体思路是将数组转换为字符串,因为在定位另一组字符时,这些字符串更易于使用

如果您需要进一步的帮助,请告诉我。我希望这有帮助

public void findWord(char[] word; char[][] data){
    String w = new String(word); //it is much easier to work with strings for a searching problem like this
    int x=0,y=0;
    for(char[] i:data){//iterates through each row of data
        String d = new String(i);
        while(d.contains(w)){
            x+=i.indexOf(w);//locates the pattern
            System.out.println("pattern found at " + x + ", " + y);
            x++;
            d=s.substring(x);//this removes the previous occurance of the patern so that the index of can find a new repeat in the same row 
        }
        y++;
        x=0;//reset for next array
    }
}
这可能有助于:

int k = 0, n = 0;
char word[] = "BOOK";

for (int i = 0; i < size - 1; i++)
{
    for (int j = 0; data[i][j] != '\0'; j++)
    {
        n = j;

        while (data[i][n] == word[k] && word[k] != '\0')
        {
            n++;
            k++;

            if (word[k] == '\0')
            {
                printf("Found at %i, %i", i, j)
            }
        }

        k = 0;
    }
}
intk=0,n=0;
char word[]=“BOOK”;
对于(int i=0;i
这显然是一项任务。因此,用户可以帮助您了解您的尝试有什么问题,但无法为您完成任务。正如@RobertoCaboni所说,我们不会为您完成任务。但是你可以从一行开始,直到找到第一个字母,然后试着找出下面的内容是否与你正在搜索的单词相等。请尝试一下,如果您有任何问题,请告诉我们。您的初始化很有帮助--您不仅仅有一个字符数组,在
数据中有3个以nul结尾的字符串,但在
Word中没有。您可以通过对每个字符串进行迭代,直到找到nul字符,检查它们是否按顺序包含
Word
中的字符,从而充分利用字符串的优势。。。张贴你尝试过的内容和你的困境。这不是一项任务,这是医生给我们的一个额外问题,让我们练习,但我真的不知道从哪里开始,这是我第一次学习c,这就是为什么如果有人想帮我写代码或理解代码,他/她可以提示:开始搜索字符
B
,这是
单词
数组的第一个元素。Ps:这行
char-Word[4]=“BOOK”不应该吗发出警告?他在请求C的帮助。Java可能会把他弄糊涂谢谢你,是的,我在寻求c语言方面的帮助,加上我是个少女,大胆的假设。我很抱歉:(没关系❤️❤️❤️@Adrisui3谢谢你指出这一点,哈哈,我以为我在看java标签,但显然不是。非常感谢,但在第一个循环中,你的矩阵中的行数是什么意思呢?非常感谢你的帮助,你推荐我学习c的网站或youtube频道吗,因为我真的很难从我的经验中学习c学习C/C++的最好方法就是通过编码和使用一本好的教科书。你也可以使用,但是要小心,因为它是一个C++参考,虽然你可以找到一些C帮助。
int k = 0, n = 0;
char word[] = "BOOK";

for (int i = 0; i < size - 1; i++)
{
    for (int j = 0; data[i][j] != '\0'; j++)
    {
        n = j;

        while (data[i][n] == word[k] && word[k] != '\0')
        {
            n++;
            k++;

            if (word[k] == '\0')
            {
                printf("Found at %i, %i", i, j)
            }
        }

        k = 0;
    }
}