提问人:HenrijsS 提问时间:11/17/2023 最后编辑:Remy LebeauHenrijsS 更新时间:11/17/2023 访问量:59
突出显示 C 语言中的嵌套事件
Highlighting nested occurences in C
问:
我有这样的任务:
如果要将行打印为标准输出,请以红色行打印找到的文本的所有匹配项。注意正确呈现“嵌套实例”,例如,如果该行包含 aaax,并且搜索文本为 aa,则该行应按如下方式输出:
<红色>aaa</红色>x
我有以下代码来查找该事件并突出显示它,但它不会为后续查找执行此操作。
const char *RED_TEXT = "\x1b[41;1m";
const char *RESET_TEXT = "\x1b[0m";
for (int i = 0; newLine[i] != '\0'; i++)
{
if (newLine[i] == searchText[0])
{
int j = 0;
while (newLine[i + j] == searchText[j])
{
j++;
}
if (searchText[j] == '\0')
{
printf("%s", RED_TEXT);
for (int k = 0; k < j; k++)
{
printf("%c", line[i + k]);
}
printf("%s", RESET_TEXT);
i += j - 1;
}
}
else
{
printf("%c", line[i]);
}
}
在示例中,是要搜索的文本:
是newLine
aaaX
searchText
"aa"
它找到前两个,但当它到达第三个时,它只检查前面的,在该示例中是 。a
X
电流输出: 预期输出: <red>aa</red>aX
<red>aaa</red>X
答: 暂无答案
评论