思路一:
1、建立数组str[ ]存输入的字符串,在建数组temp[ ];
2、比较str数组第一个元素与第二个元素是否为空格,
若不是,则str的第一个元素元素赋值给’temp【0】,并将temp【1】赋值为空格,在进入下次循环;
若是,则 跳出本次循环,进行下一循环;
3、考虑字符串间原本有多个空的情况
#include <stdio.h>
#include <stdlib.h>
#define N 100
void EmbedSpace(char str[]);
int main()
{
char str[N];
printf("please input string: ");
gets(str);
printf("output string: ");
EmbedSpace(str);
return 0;
}
void EmbedSpace(char str[])
{
char temp[N];
int i,j;
for(i = 0,j = 0 ; str[i] != '\0'; i++ ,j++)
{
if(str[i] != ' ' && str[i+1] != ' ')
{
temp[j] = str[i];
j++ ;
temp[j] = ' ';
}
//考虑字符串原本有多个空的情况
else if((str[i] != ' ' && str[i+1] == ' ')||(str[i] == ' ' && str[i+1] != ' ')||(str[i] == ' ' && str[i+1] == ' '))
{
temp[j] = str[i];
temp[j+1] = str[i+1];
}
}
temp[j] = '\0';
puts(temp);
}
思路二: 字符依次后移填空格
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 80
void EmbedSpace(char str[]);
int main()
{
char str[N];
printf("please input string: ");
gets(str);
EmbedSpace(str);
return 0;
}
void EmbedSpace(char str[])
{
int i,j,len;
len = strlen(str);
for(i=0 ; str[i+1] != '\0' ;i++)
{
if((str[i] != ' ')&& (str[i+1] != ' '))
{
for(j = len+1; j > i+1 ;j--)
str[j] = str[j-1];
str[i+1] = ' ';
len++;
}
}
puts(str);
}