如何使用'getchar()'替换字符,如果还有?

时间:2013-01-28 14:13:47

标签: c

我的任务是检查用户输入并用感叹号替换每个句点,每个感叹号带有2个感叹号,然后计算所做的替换次数。

这是我的代码:

int main(void)

{

    int userInput, substitutionsNum = 0;

    printf("please enter your input:\n");
    while ((userInput = getchar()) != '#')
    {
        if (userInput == '.')
        {
            userInput = '!';
            ++substitutionsNum;
        }

        else if (userInput == '!')
        {
            userInput = '!!';
            ++substitutionsNum;
        }
    }

    printf("%c, the number of substitutions are: %d", userInput, substitutionsNum);
    return 0;
}

如果我输入“nir”。然后“#”退出程序,输出为“#,替换次数为:1”

3 个答案:

答案 0 :(得分:2)

除了最后一次输出外,你永远不会打印输出,所以“替换”将不起作用。

此外,您不能将一对感叹号表示为'!!',这是一个多字符文字,它不相同。如果你试图打印它,至少没有I / O函数能达到预期效果。

答案 1 :(得分:1)

!! 

是两个字符。你认为它是一个单一的角色。

您正在覆盖相同的变量userInput

您可以再使用一个char缓冲区,以便根据需要调整索引。例如,当你想要存储“!!”时,要增加两个索引。

答案 2 :(得分:0)

你做错了。您需要将累积的更改输入存储在字符数组中(即char buffer[1024])并将替换放在那里。使用您的算法,您要打印的唯一内容是userInput变量的最后一个值。

由于这可能是家庭作业,我建议您阅读 C语言中有关字符串操作的更多信息。