可以使用第二个字符数组来保存结果,对空格不复制;也可以不使用第二个字符数组,而是采用后续字符覆盖空格字符的方式,达到删除效果。
以效率更高的第二种方法为例,代码如下:
void del_space(char * s){
char *p = s
do{
if(*s != ' ')*p++= *s
}while(*s++)
}
①目标
要删除字符串中的所有空格,
就要筛选出空格字符。
要筛选,就要对首字符做标记。
要所有空格,就要遍历。
~
②命令行
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
~
③定义函数
void fun(char *str)
{int i=0
char *p
/*标记:p=str表示指针指向字符串首地址做标记*/
for(p=str*p!='\0'p++)
/*遍历:不等于'\0'表示只要字符串不结束,就一直p++。*/
if(*p!=' ')str[i++]=*p
/*删除:如果字符串不等于空格,即有内容就存入字符串。等于空格就不储存,但是指针还是p++继续后移,跳过储存空格相当于删除。*/
}
void fun(char *str)
{int i=0
char *p=str
while(*p)
{if(*p!=' ')str[i++]=*p
p++}
/*除了for循环遍历,也可while循环遍历。注意 p++在if语句后,不然会漏掉第一个字符。*/
str[i]='\0'
/*循环完毕要主动添加'\0'结束字符串。*/
~
④主函数
viod main()
{char str[100]
int n
printf("input a string:")
get(str)
puts(str)
/*输入输出原字符串*/
fun(str)
/*利用fun函数删除空格*/
printf("str:%s\n",str)