【问题标题】:Using prototype replace one character with another in c使用原型在c中用另一个字符替换一个字符
【发布时间】:2017-04-08 13:27:53
【问题描述】:
#include "stdafx.h"
#include "stdio.h"
void repl(char *string, char oldc, char newc);

char text[60] = { "I am going to replace the character a with the character i";
char newc = 'b';
char oldc = 'a';

int main()
{
    void repl(char *string, char oldc, char newc);

    return 0;

}

void repl(char *string, char oldc, char newc)
{
    int i = 0;
    for (i = 0; i < *string; i++)
    {
        if (*(string + i) == oldc)
        {
            *(string + i) == newc;
        }
    }
    printf("%s", string);
}

我正在尝试将字符 a 替换为字符 b。 我知道如何在不使用指针的情况下做到这一点,但我不太确定何时涉及指针。 我得到的原型是:

void repl(char *string, char oldc, char newc);

【问题讨论】:

  • 对于任何像string这样的有效指针和像i这样的索引,表达式string[i]*(string + i)是相等的。
  • 您的问题是?你甚至都不调用函数。
  • 另外,你正在做一些非常不寻常的事情。许多初学者错误地使用赋值= 而不是比较==。你反其道而行之。一个好的编译器应该能够警告您,如果没有,则启用更多警告。
  • 最后,仔细看看循环条件...它远非正确,循环将(使用您可能想要使用的字符串)迭代 73 次。
  • char text[60] = { "I am going to replace the character a with the character i"; 行中有一个 uh...dangling...花括号。这不需要存在,并且会导致编译问题。

标签: c string pointers character


【解决方案1】:

这可以满足您的需求。我强烈建议阅读一些基本的 C 编程主题,例如调用函数和声明 char 数组。与此同时……

#include "stdafx.h"
#include "stdio.h"
void repl(char *string, char oldc, char newc);

char text[60] = "I am going to replace the character a with the character i";
char newc = 'i';
char oldc = 'a';

int main()
{
    repl(text, oldc, newc);
    return 0;
}

void repl(char *string, char oldc, char newc)
{
    int i = 0;
    for (i = 0; string[i]; i++)
    {
        if (string[i] == oldc)
        {
            string[i] = newc;
        }
    }
    printf("%s", string);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2011-08-21
    • 2021-06-15
    • 2013-12-03
    • 2012-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多