正常程序:在c为空格时,设置一个小开关,开关开时继续下一步显示,开关关闭不显示。
#include <stdio.h>
main()
{
int c;
int inspace= 1;
while((c = getchar()) != EOF)
{
if(c == ' ')
{
if(inspace == 1)
{
inspace = 0;
putchar(c);
}
}
else
{
inspace = 1;
putchar(c);
}
}
}
把c=getchar()挪出来就不正常:
#include <stdio.h>
main()
{
int c = getchar();
int inspace = 0;
while (c != EOF)
{
if (c == ' ')
{
if (inspace == 0)
{
inspace = 1;
putchar(c);
}
}
else
{
inspace = 0;
putchar(c);
}
}
}
如果将空格数限制为n,n以内的空格不变,大于n的空格数都合并为n个空格:
#include <stdio.h>
main()
{
int c;
int s = 1;
int i = 0;
while ((c = getchar()) != EOF)
{
if (c == ' ')
{
i++;
if (i <= 2 && s == 1)
putchar(c);
else
{
i = 0;
s = 0;
}
}
else
{
s = 1;
putchar(c);
}
}
}
将任意空格合并成n个空格
#include <stdio.h>
main()
{
int c;
int s = 1;
int i = 0;
while ((c = getchar()) != EOF)
{
if (c == ' ')
{
if (s == 1)
{
for (i = 0; i <= 3; i++)
{
s = 0;
putchar(c);
}
}
}
else
{
s = 1;
putchar(c);
}
}
}