我在线在线做一个基本的c编程问题。 基本上我要做的就是接受输入(来自控制台),比如说
00000100+10000001
并生成正确的输出
00000011
我发现了一种可用于将二进制转换为十进制,十进制转换为二进制的算法。我不需要那方面的帮助。 问题表明您不应该使用数组(包括字符串)。我想的是一次用户输入一位数字,然后处理每个数字。但是每当我使用
时scanf("%d",&i)
,输入总是前进到我想避免的新行,以便输入和输出匹配。有没有人知道如何从用户那里获取一个数字而不转移到下一行?
答案 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();