一个将多个空格转换成一个空格的程序

#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'计算进去.
原文地址:https://www.cnblogs.com/hnrainll/p/2033540.html