gpt4 book ai didi

c - 使用子字符串的转换规则转换字符串

转载 作者:行者123 更新时间:2023-11-30 15:51:33 24 4
gpt4 key购买 nike

假设我有一个像这样的字符串:aaaaaa

我有一个需要应用的转换,如下所示:aa -> b

我的问题是:

  1. 如何(单独)找到所有子字符串,这些子字符串是将转换规则应用于给定字符串中的每个子字符串的结果。因此,例如,在我举的例子中,我需要获得以下结果字符串:

    咩咩,啊啊啊,啊啊啊,啊啊啊,啊啊啊

最佳答案

通过递增 char* 逐步遍历字符串。每次在字符串中前进时,都使用 strncmp 检查后面是否有想要的子字符串(例如 aa)。每次为真时,复制该字符串并替换您在副本中查找的字符串:

// str is the string
// needle is what you want to replace
// replacement is what you want to replace the needle with
for (char *p = str; *p != '\0'; p++) {
if (strncmp(p, needle, strlen(needle)) == 0) {
char *str_ = malloc(strlen(str)+1+strlen(replacement)-strlen(needle));
strcpy(str_, str);
char *p_ = p - str + str_;
memmove(p_+strlen(replacement), p_+strlen(needle), strlen(p_)+1-strlen(replacement));
memcpy(p_, replacement, strlen(replacement));
// do something with str_ here (and probably free it at some point)
}
}

关于c - 使用子字符串的转换规则转换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039219/

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