C计算器使用getchar / putchar

时间:2016-03-13 02:45:43

标签: c

有史以来第一次C编程课。我必须使用putchar / getchar创建一个C计算器。下面的代码,如果我有远,并循环,要求用户输入。我遇到的问题是如何在输入之前考虑空格/多个空格,数字和操作数之间的空格/多个空格,操作数和数字之间没有空格,以及用户输入后的空格是否完整。

现在代码将使用数字和操作数之间的一个空格。

含义,10 + 5有效。但是,例如,10 + 5不会和____5 + 10(其中__ =空格),或10 + 5 ______,或10 _________ + 10不起作用。

有关如何在数字和操作数之间以及在任何用户输入之前考虑多个空格的任何建议或帮助都非常受欢迎。

非常感谢您对当前代码的任何帮助。非常感谢您的帮助和时间!!

char a = 0xA5;

1 个答案:

答案 0 :(得分:0)

确定!此问题的解决方案涉及了解getchar()的工作原理。它还包括标准输入[stdin]的输入如何工作的概念。

因此,每当使用scanf()/ getchar()等对变量进行输入时,需要进行任何操作以警告编译器确认变量的输入。一个是新行\n(按Enter键),另一个是white-space。他们会提醒输入已完成。

输入10 + 5 [Press Enter]解释了这一点。第一个空格确保ch的值为10,因此input1的值为10.然后+通过空格后operand获取+的值}。之后,在写5后按Enter键。这样可以在5中节省价值input2。其余的操作完美地发生。

在我们有太多空格____5 + 10 / 10+5______ / 10_________+ 10的其他情况下,我们必须查看代码将如何跟随此类输入。

  1. _____5+10第一个空格将错过第一个while循环,因为空格是退出条件。然后控件转到第二个while循环,其中第二个空格也将是循环的退出条件。第三个while循环也是如此,它也会退出。因此,答案将为input1 operand input2,并且所有这些都具有默认值,即0,0(按比例缩小为字符时为空白)和0。
  2. 10+5_____此处第一个空格显示在5之后,因此,getchar()会向input1提供值10+5,其他两个变量甚至不会得到分配。
  3. 这说明为什么变量无法分配我们预期的值。此问题的解决方案可以通过额外处理来解决,但可以检查空格的显示方式。