我有一个 C 源代码。
#include <stdio.h>
#define IN_W 1
#define OUT_W 0
#define SPACE 32
#define TAB 9
int main() {
int c, state, temp;
state = OUT_W;
while ((c = getchar()) != EOF) {
if ((c != SPACE || c != TAB) && (state == OUT_W)) {
state = IN_W;
temp = c;
c = 13;
putchar(c);
c = 10;
putchar(c);
putchar(temp);
} else if (c != SPACE || c != TAB)
putchar(c);
else
state = OUT_W;
}
return 0;
}
我想要实现的是我将输入一些字符/单词并通过 getchar 捕获这些输入。当 getchar 收到除空格或制表符之外的任何字符时,它将打印一个新行,然后打印这些字符,直到找到空格或制表符(放弃它们)。例如,当我输入
123 eat 4bananas in themorning
该程序将打印
123
eat
4bananas
in
themorning
我试图将它与 CR 或 LF 集成,但它仍然打印“123 eat 4bananas in themorning”。
我的问题是: 1. 我错过了什么?2.在最后一个'else'中,哪个对正在运行的程序更有效:
else
state = OUT_W;
或者
else if ((c == SPACE || c == TAB) && state == IN_W)
state = OUT_W;
else
continue; // or can I use single ';' since we do nothing in here?
就这样。感谢您的帮助。
注意:我也尝试过使用 '\n' 和 '\t'。
问候,马里奥