【问题标题】:Code doesn't work correctly replacing one character in a string with another代码无法正确使用另一个字符替换字符串中的一个字符
【发布时间】:2015-12-24 15:33:28
【问题描述】:

我有这个程序要求用户输入一个字符串和两个字符。一个要替换的字符,另一个将替换旧的字符。我调用了一个名为replace() 的函数,它循环遍历字符串,查找旧字符并将其替换为新字符。它在main() 中打印新字符串,但它不能正常工作。我做错了什么?

#include <stdio.h>
#include <string.h>
void replace(char string[], char old, char new);

int main()
{
    char input[100], newChar, oldChar;
    char newstr[100];

    printf("Enter a string: ");
    fgets(input, 100, stdin);


    printf("Enter a character to replace: ");
    scanf("%c", &oldChar);

    printf("Replace character with?: ");
    scanf("%c", &newChar);
    getchar();

    replace(input, oldChar, newChar);

    printf("Result: %s\n", input);


}

void replace(char string[], char old, char new)
{
    int length = strlen(string);
    int i = 0;

    for(i=0; i<length; i++)
    {
        if(string[i] == old)
        {
            string[i] = new;
        }
    }
}

【问题讨论】:

  • scanf("%c", &amp;oldChar); --> scanf("%c", &amp;oldChar);getchar();
  • 哇哦。试了一下。有效。谢谢:D
  • scanf("%c", &amp;newChar); --> scanf(" %c", &amp;newChar);.
  • 请注意,最基本的调试技术之一是“打印输入以确保得到预期的结果”。如果你打印了字符,你就会发现问题。
  • @CoolGuy 怎么换成空格?

标签: c string function char


【解决方案1】:

请试试这个,我认为缺少 getchar:

printf("Enter a character to replace: ");
scanf("%c", &oldChar);
getchar();

printf("Replace character with?: ");
scanf("%c", &newChar);
getchar();

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 2013-12-03
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2021-12-04
    • 2012-01-01
    相关资源
    最近更新 更多