我的任务是检查用户输入并用感叹号替换每个句点,每个感叹号带有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”
答案 0 :(得分:2)
除了最后一次输出外,你永远不会打印输出,所以“替换”将不起作用。
此外,您不能将一对感叹号表示为'!!'
,这是一个多字符文字,它不相同。如果你试图打印它,至少没有I / O函数能达到预期效果。
答案 1 :(得分:1)
!!
是两个字符。你认为它是一个单一的角色。
您正在覆盖相同的变量userInput
您可以再使用一个char缓冲区,以便根据需要调整索引。例如,当你想要存储“!!”时,要增加两个索引。
答案 2 :(得分:0)
你做错了。您需要将累积的更改输入存储在字符数组中(即char buffer[1024]
)并将替换放在那里。使用您的算法,您要打印的唯一内容是userInput
变量的最后一个值。
由于这可能是家庭作业,我建议您阅读 C语言中有关字符串操作的更多信息。