【问题标题】:Repeatedly removing and replacing the occurence of a substring from the input string code is not working从输入字符串代码中反复删除和替换出现的子字符串不起作用
【发布时间】:2021-02-04 17:01:29
【问题描述】:

我一直在解决这个问题:

函数 - 删除 foo

编写一个程序,通过重复将每次出现的 'foo' 替换为 'oof' 来使用函数从输入字符串中重复删除子字符串 foo 的出现后找到新​​字符串。

功能详情请参考功能规范。

该函数接受一个指向字符串的指针。

void manipulate(char * a)

输入输出格式:

输入由一个字符串组成。假设字符串中所有字符均为小写字母,字符串最大长度为100。

请参阅示例输入和输出以了解格式规范。

所有粗体字对应输入,其余对应输出。

示例输入和输出:

Enter the input string

akhfoooo

The output string is akhoooof

函数定义:

void manipulate (char * a)

这是我的代码:

#include <stdio.h>
#include <string.h>
void manipulate (char *a){
    int i;
    char b[3]="foo";
    for (i=0;i<strlen(a);i++){
        if (strncmp(a+i,b,3)==0){
            a[i]='o';
            a[i+1]='o';
            a[i+2]='f';
            manipulate (a);
        } 
    }
 printf ("%s",a);}
int main(){
    char string[50];
    printf ("Enter the input string\n");
    scanf ("%s",string);
    manipulate (string);
    return 0;
}

谁能告诉我如何编辑这段代码以提供正确的输出?

【问题讨论】:

  • 'char b[3]="foo";' - 不是字符串。
  • 您是否进行了任何调试,例如。如果找到匹配项,打印出 'i' 的值?
  • 'please don't downvote rr close this question I beg you all please' 几乎可以保证拒绝和关闭投票,无论您的问题是否值得:(
  • 你完全正确,关于这个完全相同的作业的另一个问题有不同的问题。您可以通过遵循关于如何询问简单调试问题的 SO 指南来避免该问题。至少,您应该同时呈现所需的行为和代码的行为,并说明它们的不同之处(如有必要)。如果问题集中在代码问题而不是编程任务上,那么它将与其他类似的代码问题进行比较,而不是与其他类似的任务进行比较。

标签: arrays c string pointers


【解决方案1】:

当操作返回时打印出 main 中的操作字符串。如果在每次调用操作中打印字符串,你会得到你所看到的,这是一个接一个的所有中间结果。

另外,你真的应该在每个 printf 的末尾打印一个换行符(除非你确定下一个 printf 应该在同一行。所以你的 printf 调用应该如下所示:

printf("%s\n", string);

【讨论】:

  • 你能写出更正的代码吗?我无法完全得到你。
  • @"programmer":将第 14 行移到第 19 行之后。
  • 我现在正在使用这个代码:ide.codingblocks.com/s/418168
  • 但是在我正在开发的编码平台上
  • 我的意思是,您可以输入超过 49 个字符的字符串并溢出输入缓冲区——这可能是其中之一?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2018-03-28
  • 2021-01-23
  • 2016-11-30
相关资源
最近更新 更多