反复从输入字符串中删除和替换子字符串的出现

超越宇宙

我有这个作业问题:使用函数通过反复地将'foo'的每个出现替换为'oof',使用函数从输入字符串中反复删除子字符串foo的出现之后,编写一个C程序来查找新字符串。

这是我的代码:

#include <stdio.h>
#include <string.h>

void manipulate(char * a)
{
    int i, flag = 0;
    char newstr[100];

    for (i = 0; a[i] != '\0'; i++) {
        if (a[i] == 'f') {
            if ((a[i + 1] != '\0') && (a[i + 1] == 'o')) {
                if ((a[i + 2] != '\0') && (a[i + 2] == 'o')) {
                    i += 3;
                    flag++;
                }
            }
        }
        newstr[i] = a[i];
    }

    for (i = 0; i < flag; i++) {
        strcat(newstr, "oof");
    }

    printf("\nThe output string is %s", newstr);
}

int main()
{
    char a[100];

    printf("Enter the input string");
    scanf("%s",a);
    manipulate(a);

    return 0;
}

我认为我的代码出了点问题,因为预期的输出是:

Enter the input string
akhfoooo
The output string is akhoooof

但是我的实际输出是:

Enter the input string
akhfoooo
The output string is akhoof

您能纠正我代码中的错误吗?

萨马拉斯

改变这个

scanf("%c",a);

对此

scanf("%s",a);

因为您要读取字符串,而不是单个字符。


编辑以进行编辑(请参阅评论):

#include <stdio.h>
#include <string.h>

void manipulate(char * a)
{
    int i = 0;
    char *pch;
    size_t len = strlen(a);
    while(a[i]) // until we do not reach the null terminator
    {
        // so that we do not go after the end of the string
        if(i + 2 == len)
          break;
        // if we found 'foo'
        if(a[i] == 'f' && a[i + 1] == 'o' && a[i + 2])
        {
           // replace it with 'oof'
           a[i] = 'o';a[i + 1] = 'o'; a[i + 2] = 'f';
           i = i + 2; // and check for after the replacement we just made
        }
        // increment our counter to check the next charachter
        i = i + 1;
    }
    printf("\nThe output string is %s\n", a);
}

int main()
{
    char a[100];

    printf("Enter the input string");
    scanf("%s",a);
    manipulate(a);

    return 0;
}

如果要使用函数,strstr()会很好。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在字符串中第n次出现子字符串后替换/删除

来自分类Dev

替换/删除字符串中的字符

来自分类Dev

如何查找和替换字符串中所有出现的子字符串?

来自分类Dev

当子字符串在R中多次出现时,删除子字符串之间的字符串部分

来自分类Dev

熊猫:替换字符串中的子字符串

来自分类Dev

无法替换字符串中的子字符串

来自分类Dev

替换字符串中的子字符串

来自分类Dev

如何替换字符串中第一次出现的子字符串?

来自分类Dev

从java中的字符串替换子字符串的所有出现

来自分类Dev

删除或替换javascript模式中的子字符串

来自分类Dev

如何从GridView列中删除/替换子字符串?

来自分类Dev

从字符串中替换/删除相似的子字符串

来自分类Dev

如何从字符串中删除子字符串?

来自分类Dev

Python从字符串中删除子字符串

来自分类Dev

不从字符串中删除子字符串

来自分类Dev

蜂巢-从字符串中删除子字符串

来自分类Dev

快速删除字符串中的子字符串

来自分类Dev

如何从字符串中删除子字符串?

来自分类Dev

从字符串中删除重复的子字符串

来自分类Dev

从字符串中删除子字符串

来自分类Dev

如何反复删除字符串中第一次出现的python?

来自分类Dev

如何删除字符串中第一次出现的子字符串?

来自分类Dev

如何删除字符串中第一次出现的子字符串?

来自分类Dev

在字符串中查找和替换字符串

来自分类Dev

字符串和子字符串以及子字符串在主字符串中出现的次数

来自分类Dev

修改和替换字符串中带引号的子字符串

来自分类Dev

在 PowerShell 中删除和替换 ps 文件中的子字符串

来自分类Dev

删除和替换.php文件中的字符串

来自分类Dev

替换和删除行名中的部分字符串

Related 相关文章

  1. 1

    在字符串中第n次出现子字符串后替换/删除

  2. 2

    替换/删除字符串中的字符

  3. 3

    如何查找和替换字符串中所有出现的子字符串?

  4. 4

    当子字符串在R中多次出现时,删除子字符串之间的字符串部分

  5. 5

    熊猫:替换字符串中的子字符串

  6. 6

    无法替换字符串中的子字符串

  7. 7

    替换字符串中的子字符串

  8. 8

    如何替换字符串中第一次出现的子字符串?

  9. 9

    从java中的字符串替换子字符串的所有出现

  10. 10

    删除或替换javascript模式中的子字符串

  11. 11

    如何从GridView列中删除/替换子字符串?

  12. 12

    从字符串中替换/删除相似的子字符串

  13. 13

    如何从字符串中删除子字符串?

  14. 14

    Python从字符串中删除子字符串

  15. 15

    不从字符串中删除子字符串

  16. 16

    蜂巢-从字符串中删除子字符串

  17. 17

    快速删除字符串中的子字符串

  18. 18

    如何从字符串中删除子字符串?

  19. 19

    从字符串中删除重复的子字符串

  20. 20

    从字符串中删除子字符串

  21. 21

    如何反复删除字符串中第一次出现的python?

  22. 22

    如何删除字符串中第一次出现的子字符串?

  23. 23

    如何删除字符串中第一次出现的子字符串?

  24. 24

    在字符串中查找和替换字符串

  25. 25

    字符串和子字符串以及子字符串在主字符串中出现的次数

  26. 26

    修改和替换字符串中带引号的子字符串

  27. 27

    在 PowerShell 中删除和替换 ps 文件中的子字符串

  28. 28

    删除和替换.php文件中的字符串

  29. 29

    替换和删除行名中的部分字符串

热门标签

归档