需要注意的是输入函数不能用scanf()函数,scanf()函数你在输入空格的时候,会将第一个空格后所有的内容都丢掉,我也试了用gets()函数,在unbutu用gcc编译时会报警告,说函数不安全,不应该使用,所以我用了循环加getchar()函数来读取字符串。
#include<stdio.h>
#include<string.h>
void deblank( char string[] )
{
int i,j=0,p;
for ( i = 0;string[i] != '\0';i++ )
{
if ( string[i] == ' ' )//找到空格
{
j = i+1;
p = i;//记住i的值
while ( string[j] == ' ')//找到空格后的第一个非空格
{
j++;
}
while ( string[j] != '\0' )//删除空格
{
string[i] = string[j];
i++;
j++;
}
string[i] = '\0';
i = p;//此时string[i]的值是之前字符串空格后的第一个非空格字符
}
}
}
int main()
{
int i;
char string[20];
printf("请输入字符串:\n");
while ( (string[i] = getchar()) != '\n')//gets()函数不安全,scanf()函数空格会结束读入
{
i++;
}
deblank(string);//调用函数
printf("%s\n",string);
return 0;
}