一直以为自己是个很笨的人,突然间逻辑小宇宙爆发了,解决了一道编程难题。题目如下:
“编写一个函数。其参数为一个字符串,函数删除字符串中的空格。在一个可以循环读取的程序中进行测试,直到用户输入空行。对于任何输入字符串,函数都应该适用并可以显示结果。”
main函数和delete_blank函数都是我自己想出来的,s_gets函数借用《C Primer Plus》例题。精华都在delete_blank里头了。给自己点个赞!
#include <stdio.h>
#include <string.h>
#define LIM 81
void delete_blank(char * pa);
char * s_gets(char * st, int n);
int main(void)
{
char pa[LIM];
while(1)
{
printf("enter a string or q to quit:\n");
s_gets(pa,LIM);
if(strcmp(pa,"q")==0)
break;
else
{
delete_blank(pa);
fputs(pa,stdout);
printf("\n");
}
}
return 0;
}
void delete_blank(char * pa)
{
int i,length;
length=strlen(pa);
for(i=length-1;i>=0;i--)
{
if (pa[i]==' ')
{
pa[i]='\0';
strcat(&pa[0],&pa[i+1]);
length--;
continue;
}
}
}
char * s_gets(char * st, int n)
{
char * ret_val;
int i=0;
ret_val=fgets(st,n,stdin);
if(ret_val)
{
while (st[i]!='\n'&&st[i]!='\0')
i++;
if(st[i]=='\n')
st[i]='\0';
else
while( getchar()!='\n')
continue;
}
}