如何用C中的另一个字符串替换字符串中的子字符串?

Thanushan S.

例如,我要替换abc123abc890xyz不使用怎么办#include <string.h>

我尝试通过创建一个新字符串来尝试进行此操作,并在for循环的帮助下,将每个字符复制到新字符串中。但是,我似乎无法找出执行该操作的方法。任何方法都可以,但是我不能使用#include <string.h>

char str1[] = "123abc890";
char str2[] = "abc";
char str3[] = "xyz";
char new_string[50];

for (int i = 0; str1[i] != '\0'; i++) {
    if (str1[i] == str2[i]) {
        for (int j = 0; str2[j] != '\0'; j++) {
            if (str1[i+j] != str1[i+j]) {
                break:
            }
            new_string[i] = str3[i];
        }
    }
    new_string[i] = str1[i];
}

仅供参考,我对C还是很陌生,所以请注意一些非常笨拙的代码。

chqrlie

您的代码是一个好的开始,但是有很多问题:

  • 测试if (str1[i+j] != str1[i+j])永远是真的
  • 您复制不完整的片段,并在复制后无法跳过。
  • 您忘记了将目的地终止为空。

这是修改后的版本:

#include <stdio.h>

char *str_replace(char *dest, const char *str1, const char *str2, const char *str3) {
    size_t i = 0, j, k = 0;
    
    // replacing substring `str2` with `str3`, assuming sufficient space
    while (str1[i] != '\0') {
        for (j = 0; str2[j] != '\0'; j++) {
            if (str1[i + j] != str2[j]) {
                break;
            }
        }
        if (str2[j] == '\0' && j > 0) {
            // we have a match: copy the replacement and skip it
            i += j;
            for (j = 0; str3[j] != '\0'; j++) {
                dest[k++] = str3[j];
            }
        } else {
            // copy the byte and skip it.
            dest[k++] = str1[i++];
        }
    }
    dest[k] = '\0';  // null terminate the destination
    return dest;
}

int main() {
    char new_string[50];
    printf("%s\n", str_replace(new_string, "123abc890", "abc", "abc"));
    printf("%s\n", str_replace(new_string, "123abc890", "abc", "xyz"));
    printf("%s\n", str_replace(new_string, "123abc890", "a", "xyz"));
    printf("%s\n", str_replace(new_string, "123abc890", "abc", ""));
    return 0;
}

输出:

123abc890 
123xyz890 
123xyzbc890 
123890

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用 MySQL 中另一个字符串和一个字段的串联替换任何字符串

来自分类Dev

如何用熊猫列中的另一个字符串替换子字符串

来自分类Dev

如何从(C)中的另一个字符串获取子字符串

来自分类Dev

如何用一个字符串中的另一个子字符串替换一个子字符串的所有出现?

来自分类Dev

用动态内容中的另一个字符串替换子字符串

来自分类Dev

用字符串中的另一个字符替换“字符”

来自分类Dev

如何用另一个字符串替换特定的字符串?

来自分类Dev

用另一个字符串替换字符串中的字符

来自分类Dev

用另一个字符串替换字符串中的字符?

来自分类Dev

用另一个字符串替换字符串中的字符?

来自分类Dev

无法用另一个字符串替换字符串中的字符

来自分类Dev

如何从终端用更多文件中的另一个字符串替换一个字符串?

来自分类Dev

如何在字符串中获取子字符串并将其存储在另一个字符串中

来自分类Dev

如何用其他多个字符(另一个字符串)替换字符串中的多个字符而不替换其他出现?

来自分类Dev

查找字符串中的文本并将整个字符串替换为另一个字符串+ R

来自分类Dev

用Django模板中的另一个字符串替换字符串

来自分类Dev

用另一个字符串替换文件中的字符串

来自分类Dev

用另一个字符串替换字符串中的单词 - Javascript

来自分类Dev

用不包括模式的另一个字符串替换字符串中的一个字符

来自分类Dev

匹配另一个字符串中的子字符串

来自分类Dev

MySQL和PHP在表中搜索一个字符串,但替换另一个字符串

来自分类Dev

替换一个字符串,只要它在Java中不被另一个字符串跟随?

来自分类Dev

不能用存储在变量中的另一个字符串替换一个字符串

来自分类Dev

如何在一个字符串中替换子字符串的多个实例

来自分类Dev

如何用另一个替换字符串的第n个字符

来自分类常见问题

如何测试字符串是否在PHPUnit中包含另一个字符串?

来自分类Dev

Android:如何从另一个字符串中检索特定模式的字符串

来自分类Dev

如何尽快找到另一个字符串中的特定字符串?

来自分类Dev

汇编:用另一个字符串替换子字符串

Related 相关文章

  1. 1

    如何用 MySQL 中另一个字符串和一个字段的串联替换任何字符串

  2. 2

    如何用熊猫列中的另一个字符串替换子字符串

  3. 3

    如何从(C)中的另一个字符串获取子字符串

  4. 4

    如何用一个字符串中的另一个子字符串替换一个子字符串的所有出现?

  5. 5

    用动态内容中的另一个字符串替换子字符串

  6. 6

    用字符串中的另一个字符替换“字符”

  7. 7

    如何用另一个字符串替换特定的字符串?

  8. 8

    用另一个字符串替换字符串中的字符

  9. 9

    用另一个字符串替换字符串中的字符?

  10. 10

    用另一个字符串替换字符串中的字符?

  11. 11

    无法用另一个字符串替换字符串中的字符

  12. 12

    如何从终端用更多文件中的另一个字符串替换一个字符串?

  13. 13

    如何在字符串中获取子字符串并将其存储在另一个字符串中

  14. 14

    如何用其他多个字符(另一个字符串)替换字符串中的多个字符而不替换其他出现?

  15. 15

    查找字符串中的文本并将整个字符串替换为另一个字符串+ R

  16. 16

    用Django模板中的另一个字符串替换字符串

  17. 17

    用另一个字符串替换文件中的字符串

  18. 18

    用另一个字符串替换字符串中的单词 - Javascript

  19. 19

    用不包括模式的另一个字符串替换字符串中的一个字符

  20. 20

    匹配另一个字符串中的子字符串

  21. 21

    MySQL和PHP在表中搜索一个字符串,但替换另一个字符串

  22. 22

    替换一个字符串,只要它在Java中不被另一个字符串跟随?

  23. 23

    不能用存储在变量中的另一个字符串替换一个字符串

  24. 24

    如何在一个字符串中替换子字符串的多个实例

  25. 25

    如何用另一个替换字符串的第n个字符

  26. 26

    如何测试字符串是否在PHPUnit中包含另一个字符串?

  27. 27

    Android:如何从另一个字符串中检索特定模式的字符串

  28. 28

    如何尽快找到另一个字符串中的特定字符串?

  29. 29

    汇编:用另一个字符串替换子字符串

热门标签

归档