【发布时间】:2020-03-20 19:34:23
【问题描述】:
所以我的问题是这样的,我想使用getchar 函数打印一个数字,如果我输入101 输出应该是101,但我得到11 作为输入和@987654325 @ 在数字内时被忽略。
代码:
#include <stdio.h>
#define Out 0
#define In 1
void ex04();
int main() {
ex04();
return 0;
}
void ex04() {
int c;
while ((c = getchar()) != EOF) {
int state = Out;
if (state == Out && c != '0' && c != '\n' && c != '\t' && c != ' ') {
state = In;
printf("%c", c);
} else
if (state == In && c == '0') {
State = In;
printf("%d", 0);
} else
if (state == Out && c == '0' || c == '\n' || c == '\t' || c == ' ') {
state = Out;
} else
if (state == In && c == '\n' || c == '\t' || c == ' ') {
state = Out;
}
}
}
例子:
输入:101
我的输出:11
正确输出:101
输入:1 2 0 4
我的输出:1 2 4
正确输出:1 2 0 4
输入:0
我的输出:
正确输出:0
真的很感激任何帮助,顺便说一句,我不能使用scanf。
【问题讨论】:
-
state == OUT始终为真,因为您刚刚分配了state = OUT。因此,当您分配 state = OUT 并且不打印任何内容时,您会遇到第三个条件。 -
与您当前的问题无关,但
state == In && c == '\n' || c == '\t' || c == ' '与(state == In && c == '\n') || c == '\t' || c == ' '相同,可能不是您想要的。为什么不使用两个嵌套的if子句,外部用于state,内部用于c? -
目标到底是什么?您提供了 2 个输入和预期输出,但基于此,您可以使用
while ((c=getchar()) != '\n') if ( c >= '0' && c <= '1') printf("%c", c);。还有其他标准吗? -
因为在第三个中如果我想要的是如果它在一个数字内并且字符不是 \n 或 \t 或 ''
-
如果我输入 1 2 0 4,我忘记了一个标准,我想要 1 2 0 4 就像输出一样