C的一段代码问题

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:47:17
每行打印输出一段字母(除空格字符表换行符)代码如下:
#include <stdio.h>

#define IN 1
#define OUT 0

main()
{
int c,state; /* state标记当前输入是否为字母 */

state = OUT; /* 初始化.. */
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\n' || c == '\t') {
if (state = IN) {
putchar('\n');
state = OUT; /* 出现一次空格后state置OUT,使其退出此循环。。 */
}
} else if (state = OUT) {
putchar(c);
state = IN;
} else
putchar(c);
}
}
问题是这样滴。。
编译运行后输入一段字符。。如果连着输入2个或以上空格的话回车后会“断行”..比如说我输入 123 456 789 888888 回车后就变成
123
456

789

888888
我也想过这个问题。。所以用state标记。
如果连着输入多个空格的话state会置OUT,应该会退出循环的。。
现在出现这种情况就好像 state = OUT; 这句没执行过一样 - - 寒
初学C语言。可能问的比较幼稚。。。望大侠指教...
楼下不要灌水哇。。。求教诸大侠。。难道是太晚了都睡觉去了 囧..

百度太卑鄙了。。把空格都缩进了。。搞得代码乱得 555...

#include <stdio.h>

#define IN 1
#define OUT 0

main()
{
char c;
int state; /* state标记当前输入是否为字母 */

state = OUT; /* 初始化.. */
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\n' || c == '\t') {
if (state == IN) {
putchar('\n');
state = OUT; /* 出现一次空格后state置OUT,使其退出此循环。。 */
}
} else if (state == OUT) {
putchar(c);
state = IN;
} else
putchar(c);
}
}