将输入复制到输出,并将连续多个空格用一个空格代替

#include <stdio.h>
//将输入复制到输出,将连续多个空格用一个空格代替
//如果上一个是空格,不打印。这样做直到下一个不是空格。
int main(void){
    int c;
	int last=0;//前面不是空格
	c=getchar();
	while(c!=EOF){

		if(c==' '){

			if(last==0){//如果前面不是空格
				putchar(c);
				last=1;
			}
			//else if(last==1){//如果前面是空格
			//	Do nothing 
			//}
		}
		else {
			putchar(c);
			last=0;
		}
		c=getchar();
	}
}

书上的方法:

#include <stdio.h>
#define NONBLANK 'a'
//将输入复制到输出,将连续多个空格用一个空格代替
int main(void){
    int lastc;
	int c;
	lastc=NONBLANK;//将变量lastc初始化为一个任意的非空格字符
	while((c=getchar())!=EOF){
		if(c!=' ')
			putchar(c);
		if(c==' ')
			if(lastc!=' ')
				putchar(c);
			lastc=c;//刷新lastc
	}

}

有递归调用的思想

猜你喜欢

转载自blog.csdn.net/weixin_38911591/article/details/89642398