gpt4 book ai didi

c - 如何在字符数组C中使用正则表达式

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

编辑:

我会再次尝试更准确地解释它。

正在编写 IRC 客户端 - 基于套接字的网络应用程序。使用recv()函数从服务器接收数据,并将其一个字符一个字符地存储在rBuf[]数组中。
然后将它们复制到数组 rBufh[] 中,该数组被传递给解析函数。
重要的是服务器一次只发送一个字符[一个recv()中的一个字符]和键(存储在两个dim.array [key1]中的字符数组)是解析时的字符串方法在接收到的数据中找到其中之一,它需要根据协议(protocol)文档中指定的 3 位代码做出正确 react 。 - 至于基础知识。

解析算法/函数的工作原理如下:

  1. key1(包含键)和rBufh数组是传递给它的参数
  2. 获取存储在key1中的第一个字符串的第一个字符,并将其与rBufh的第一个字符进行比较
  3. 如果它们匹配,则返回int ret = 2(这意味着“在接收到的数据中已找到部分 key ”

现在 recv() 将一个字符(因为服务器每次只发送一个字符)添加到 rBufh 数组中,该数组再次传递给解析函数,算法开始再次直到找到匹配的 key ,如果在步骤 3 中不匹配,则返回 int ret = 1(找到匹配的 key )或 int ret = 0

当解析器工作时,打印到标准输出会停止,并且基于解析器返回的值打印会停止较长时间(如果找到 key1 数组中的某个键的一部分)或允许打印(如果已找到整个 key 或解析器无法将 rBufH 数组中传递给它的字母与存储在 key1 中的任何 key 匹配)

我们越来越接近理解我的要求 - 我希望:)

存储在key1数组中的字符串数量是预先知道的,因为它们在协议(protocol)文档中指定。因此在定义时可以立即初始化。

我问的是:

是否可以传递给 key1 (不一定像我那样使用 sprintf - 它看起来很方便)字符串,其中包含表示“任何三位数字”的代码的某些部分。

例如
让我们用 XXX 标记上面 3 行提到的代码部分

key1[0] = "irc2.gbatemp.net XXX 昵称"

现在,如果解析器遇到任何与 key1[0] 匹配的字符串,其中包含任意三位数字来代替 XXX,它将返回 1 - 因此其他函数将有可能做出正确 react 。

这样,我就不必在 key1 数组中存储许多具有不同 XXX 值的字符串,而只需存储一个能够匹配所有这些字符串的字符串。

<小时/>

好吧,现在我真的尽力帮助您理解它并获得答案:)

问候
汤姆

附注

请随意更改此主题的标题,因为我真的不知道应该如何用几句话来描述该问题,正如您已经注意到的那样。 (之所以如此,是因为我的第一个想法是将一些正则表达式传递给 key1)

最佳答案

如果您只想在字符串中插入任意 3 位数字,请执行以下操作:

int n = 123; // some integer value that you want to represent as 3 digits
sprintf(key1[1], ":irc2.gbatemp.net %03d %s ", n, nickname);

请注意,%03d 格式说明符不是正则表达式 - 它只是指定整数参数将显示为 3 位十进制值,如果需要,可以带有前导零。

关于c - 如何在字符数组C中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558739/

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