谁能帮我组织这样的功能(作为我用填字游戏程序管理的作业):
1)我有字符串数组(一种文本文件),其中
行[0] = "str1"
row[1] = "str2"
等
2)每个字符串的长度相同
3) 从标准输入输入单词,例如 abcd
我需要在对角线定位的文本中查找单词abcd
(从左到右并不重要,只需要某种算法)并将找到的单词替换为零。
可以使用 strchr
找到第一个字母,但如何正确地前进并将文本替换为零?谁能给我任何线索吗?
解决方案:
顺便说一句,Tnx 用于减去。我找到了另一种解决方案,其中每条对角线生成为 1 条简单的线,然后我对其应用 strstr
来查找匹配位置。了解匹配位置和匹配字符串的长度可以精确检测行数组中匹配单元格的位置。
我使用了这样的代码(也许 smn 会发现它有用):
/* generating left-right diagonal string str */
for( col = cols - len; col >= 0; col --, i = 0 ){
/* where len is the length of searching string */
while( ( col+i ) < cols && i < rows ){
*(str + i) = res[i][col+i];
i ++;
}
*(str + i) = '\0';
//some match seq.
}
我对从左上角单元格(第一个字符串的开头)到最后一个顶部单元格(第一个字符串的末尾)的左右对角线进行了操作。然后对左列执行相同的过程,因此结果算法将覆盖所有字符串。
最佳答案
您可能想要一个二维字符数组,例如
char grid[i][j]
如果您的第一个字母位于grid[i][j]
,则对角线上的下一个点位于
grid[i+1][j+1]
对于 +1
和 -1
的每个组合,依此类推
关于C 在文本中沿对角线查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499988/