C 在文本中沿对角线查找字符串

标签 c algorithm

谁能帮我组织这样的功能(作为我用填字游戏程序管理的作业):

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/

相关文章:

c - 为什么 `uint8_t`赋值给 `uint8_t`会出现转换警告?

指针类型的正确术语

c++ - 如何使用 CUDA 实现 2-for 粒子交互循环,由此产生的复杂性是什么?

c - SHA1 以流方式对长度前缀的消息进行校验和

java - 对每行中包含多个单词并在 Java 中用换行符分隔的字符串进行排序的最佳方法是什么?

使用其他宏作为参数调用 C 宏

c - 如何使用curl发出HTTPS请求并传递json

计数预处理器宏可能吗?

java - JMH结果和算法复杂度的解读

javascript - 找出区间内未知函数的最大值