C 在二维字符数组中搜索单词
给定一个大小为100 x100个字符的二维数组和一个单词(1D字符数组),在二维数组中查找给定单词的匹配项(仅从左到右水平搜索) 输出: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'}这同样适用于命名为数据的二维数组 所以这里是你将如何做这样一件事。我添加了//注释进行解释,但总体思路是将数组转换为字符串,因为在定位
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;
}
}