【发布时间】:2014-11-08 09:29:30
【问题描述】:
我想在 C 中搜索一串文本,找出文本位于 2 个不同分隔符之间的位置。我专门寻找介于 /* 和 */ 之间的 cmets。我找不到允许我使用 2 个不同分隔符的函数,每个分隔符 2 个字符长。
我目前有一个很长的 char[],我需要搜索它。我能找到的最接近的东西是 strstr 来查找“/*”的第一次出现,然后将其再次与“*/”一起使用。但是,这完全省略了整个注释,只给了我“*/”和其余代码。
char *pch;
char *pch2;
pch = strstr(wholeProgramStr, "/*");
printf("%s\n",pch);
pch2 = strstr(pch, "*/");
printf("%s\n",pch2);
有什么想法吗?和相同的问题,但在“//”和换行符之间。如果没有一些非常混乱和低效的代码,我找不到实现这一点的方法。
【问题讨论】:
-
你使用
strstr的想法基本不错。你想对找到的字符串做什么?你想处理(例如打印)它,你想从原始字符串中删除它吗?您可以修改原始字符串(如strtok所做的那样)以在注释后放置一个终止空字符吗?分隔符是否应该包含在找到的字符串中? -
我基本上需要获取字符串并能够计算用于组成它的字符数量,不包括 /* */。我无法修改输入。谢谢
-
好的,那么
pch2 - (pch + 2)会给你答案,其中2是起始分隔符/*或//的字符串长度。 (您可能应该在pch + 2开始搜索pch2,也可以捕捉退化评论/*/。并检查它们是否存在,否则您可以将NULL传递给第二个strstr。) -
我将使用什么分隔符来换行。因为有些 cmets 以 // 开头并以换行符结尾
-
在这种情况下,右分隔符是
"\n",一个只包含换行符'\n'的字符串。
标签: c