From 《C程序设计语言》第二版 P13 练习1-9
#include
/* 练习1-9 将输入复制到输出,并将其中连续的多个空格用一个空格代替 */
void main()
{
int flag; // 标记是否有多个空格,0为没有多个空格,1为有多个空格
int c; // 字符
flag = 0;
while((c = getchar()) != EOF)
{
if(c != ' ')
{
flag = 0; // tips: 一定要再给flag赋值,因为flag有可能在对之前的字符操作时值被修改了,从而导致输出不了空格
putchar(c);
}
if(c == ' ')
{
if(flag == 0) // 判断是否是第一个空格,只有第一个空格才能输出
{
flag = 1;
putchar(c);
}
}
}
}
Tips:
运用flag标记是否为第一个空格,控制多余空格的输出。
只有当flag == 0,即为第一个空格时,该空格才能输出。