gpt4 book ai didi

c - 使用 2 个不同的分隔符搜索字符串 - C 编程

转载 作者:行者123 更新时间:2023-11-30 18:25:36 25 4
gpt4 key购买 nike

我想搜索 C 语言中的文本字符串,并找出文本位于两个不同分隔符之间的位置。我专门寻找/* 和 */之间的注释。我找不到允许我使用 2 个不同的分隔符(每个分隔符为 2 个字符)的函数。

我目前有一个很长的 char[],我需要搜索它。我能找到的最接近的东西是 strstr 来查找第一次出现的“/*”,然后再次使用“*/”代替。然而,这完全省略了整个注释,只给了我“*/”和其余的代码。

char *pch;
char *pch2;
pch = strstr(wholeProgramStr, "/*");
printf("%s\n",pch);
pch2 = strstr(pch, "*/");
printf("%s\n",pch2);

有什么想法吗?和同样的问题,但在“//”和换行符之间。如果没有一些非常困惑和低效的代码,我找不到实现此目的的方法。

最佳答案

您使用 strstr 的想法很好,但它不会给您一个以 null 结尾的字符串。它通过指针算术为您提供指向字符串开头的指针和字符串的长度。您可以通过在 printf 中指定 %s 格式的宽度来打印受长度限制的 char 数组:

void str_print_between(const char *str, 
const char *left, const char *right)
{
const char *begin, *end;
int len;

begin = strstr(str, left);
if (begin == NULL) return;
begin += strlen(left);

end = strstr(begin, right);
if (end == NULL) return;

len = end - begin;
printf("'%.*s'\n", len, begin);
}

根据您想要执行的操作,您可以从函数返回起始指针和长度(通过指针或作为 struct)。有许多 strn* 函数的作用与它们的 str* 对应函数相同,但需要额外的最大长度,因此您可以使用它们来进一步处理字符串。

处理行注释的工作方式与处理 block 注释相同,只是使用其他分隔符。 (但是这个简单的解决方案不考虑上下文;例如,它会检测字符串中或跨字符串的注释。)

关于c - 使用 2 个不同的分隔符搜索字符串 - C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26815623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com