如何读取单个数字的二进制计算器c?

时间:2014-10-02 23:49:26

标签: c scanf

我在线在线做一个基本的c编程问题。 基本上我要做的就是接受输入(来自控制台),比如说

00000100+10000001

并生成正确的输出

00000011

我发现了一种可用于将二进制转换为十进制,十进制转换为二进制的算法。我不需要那方面的帮助。 问题表明您不应该使用数组(包括字符串)。我想的是一次用户输入一位数字,然后处理每个数字。但是每当我使用

scanf("%d",&i)

,输入总是前进到我想避免的新行,以便输入和输出匹配。有没有人知道如何从用户那里获取一个数字而不转移到下一行?

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那么数组(以及字符串作为字符数组)是被禁止的,但字符I / O通常可能不是吗?如果是这种情况,您可以使用getc()一次读入并处理一个字符。

答案 1 :(得分:1)

限制扫描宽度。

if (scanf("%1d",&i) != 1) 
  Handle_Failure();  // This is likely the '+' in stdin.

请记住,stdin通常是行缓冲的。在用户完成该行之前,不会看到scanf()getc()等输入。


建议改为阅读用户的输入行并处理缓冲区。如果需要,一次处理1 char

char buf[1000];
if (fgets(buf, sizeof buf, stdin) == NULL) Handle_IOError_or_EOF();

char *s = buf;
while (*s) {
  Parse_Buffer();
  s++;
}
Do_Stuff();