C语言,将数组中多余的空格去除掉
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,将数组中多余的空格去除掉相关的知识,希望对你有一定的参考价值。
比如有以下字符串
a bcd e f g.
去除掉多字符之间多余的空格,只保留一个.
去除后的结果
a bcd e f g.
以下是我写的问题函数.
该函数有N多错误,求修正.
void deblank(char string[])
int i,tmp;
int sign=0;
int last=0;
for(i=0;string[i]!='\0';i++)
if(string[i]==' ')
sign+=1;
if(sign==2)
tmp=i;
while(string[tmp]!='\0')
string[last]=string[tmp];
tmp++;
last++;
string[last]='\0';
sign=0;
last=i;
int i=0;
int j=0;
while(1)
//检测字符串是否结束
if(string[i]=='\0')
string[j]='\0'; //设置字符串结束
break;
if(string[i]==' '&&string[i+1]==' ')
//两个空格,略过,不拷贝
else
//拷贝字符
string[j++]=string[i];
i++;
这样就可以实现了,自己定义个数据调用下看看
int main(void)
char Data[]="a bcd ef g";
deblank(Data);
printf("%s",Data);
追问
我还是比较关心我那函数错在哪,,
追答按照你的修改 问题太多了。
void deblank(char string[])
int i,tmp;
int sign=0;
int last=0;
for(i=0;string[i]!='\0';)
if(string[i]==' ')
sign+=1;
else
//防止一个空格误加,必须是两个连续的空格才加
sign = 0;
if(sign==2)
tmp=i+1;
while(string[tmp]!='\0')
string[last]=string[tmp];
tmp++;
last++;
string[last]='\0';
sign=0;
i=0;
else
i++;
last = i;
# include <stdio.h>
void move_array (char * a)
while(*(++a) != '\0')
*(a-1) = *a;
return;
int is_blank (char arg)
return (arg == ' ') ? 1 : 0;
void delete_blank (char * argv)
while (*(argv++) != '\0')
if(is_blank(*argv))
move_array(argv);
return;
int main(void)
char s[] = "he l lo world!";
printf("%s\n", s);
delete_blank(s);
printf("%s\n", s);
return 0;
追问
虽然说能达到目的,但题目的要求是一个函数来完成,,,,另外,,我想知道我那函数错哪了,,,求指点,,
参考技术B 优化好了,请验收void deblank(char string[])
int i , j=0;
for(i=0;string[i];i++)
if(string[i]==' ') //如果是空格
string[j++] = string[i] ;//先记保留一个
while( string[++i] ==' '); //过滤掉连续的后续空格
//运行到这里,string[i]一定不是空格,记下来
string[j++] = string[i] ;
int main()
char str[]="a bcd e f g.";
printf("old=[%s]\n" , str );
deblank( str );
printf("str=[%s]\n" , str );
return 0;
追问
我还是比较关心我那函数错在哪,,
参考技术C 你要去掉多余的空格。可以在一字符串中,进行检测,当String[i]为空格“ ”,时做个记录。,检测String【i++】是否为“ ”,是的话就删除,不是的话,继续前进。 参考技术D 从数组的最小下标开始检索,当遇到空格时就把他后面的字符一次向前填充空格,然后在最后一个字符后面加上字符结束符号"\0"以上是关于C语言,将数组中多余的空格去除掉的主要内容,如果未能解决你的问题,请参考以下文章
C语言中输入字符串,里面有空格,怎么根据空格把字符串分开,并存在数组里?