编一个函数,输入一个字符串,要求做一个新字符串,把其中所有的一个或多个连续的空白字符都压缩为一个空格。这里所说的空白包括空格、'\t'、'\n'、'\r'。例如原来的字符串是:
This Content hoho is ok
ok?
file system
uttered words ok ok ?
end.
压缩了空白之后就是:
This Content hoho is ok ok? file systemuttered words ok ok ? end.(面试题)
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
char *shrink_space(char *dest, const char *src, size_t n)
{
int i = 0;
char *tmp = dest;
while(i < n && *src != '\0')
{
if(!isspace(*src)) //if is space, just copy
*tmp++ = *src++;
else
{
src++; //判断src的后一个字符是否是空白
if(isspace(*src))
continue;
else
*tmp++ = ' ';
}
i++;
}
*tmp = '\0';
return dest;
}
int main(void)
{
char src[] = "This Content hohois ok\n\
ok?\n\
\
file system\n\
uttered words ok ok ?\n\
end.";
char *dest = (char *)malloc(sizeof(char)*(strlen(src)+1));
printf("origin:%s\n",src);
printf("shrink:%s\n",shrink_space(dest,src,strlen(src)));
free(dest);
dest = NULL;
return 0;
}