【練習題】壓縮字符串


編一個函數,輸入一個字符串,要求做一個新字符串,把其中所有的一個或多個連續的空白字符都壓縮為一個空格。這里所說的空白包括空格、'\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;
}


关注微信公众号

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com