#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
char bak_str[MAX];

void Del_Blank(char *p)
{
int i = 0;
int j = 0;
int flag = 0;
while(*(p + i) != '\0')
{

while ( *(p+i) == ' ' )
{
i++;
flag = 1;
}

if(1 == flag)
{
*(bak_str + j) = ' ';
j++;
flag = 0;
}
else
{
while ( (*(p + i) != ' ') && (*(p + i) != '\0'))
{
printf("start of the i:%d\n",i);
*(bak_str+j) = *(p+i);
j++;
i++;
}
}
}
bak_str[j] = '\0';
}

int main(void )
{
char strarr[MAX];
printf("please input string:\n");
fgets(strarr,MAX,stdin);
Del_Blank(strarr);
printf("after deal whith the string:\n");
puts(bak_str);
return 0;
}
 
这里说几个小的知识点:
1 尽量少用gets
2 fgets和gets在从标准输入中获取内容上是有区别的,gets不会获取输入字符串后敲入的换行符,而fgets会获取换行符放在数组中.
3 strlen在计算字符串的长度时不会将'\0'计算进去.