删除字符串中的空格
No more 圈内达人 2015-09-18 18:15:09
1676 4 0

请编写一个函数,函数的功能是删除字符串中的所有空格。
例如, 主函数中输入"asd af aa z67", 则输出为 "asdafaaz67"。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。



void fun (char *str)
{
int i=0;
char *p=str;
while(*p)
{
if(*p!=' ') /*删除空格*/
{
str[i]=*p;
i++;
}
p++;
}
str[i]='\0'; /*加上结束符*/
}



标准答案是这个,但是为什么我写的明明能输出出来,上传后却显示不正确。下面是我写的。

void fun(char *str)

{int i,j;

for(i=0;str[i];i++)

if(str[i]==' ')

{for(j=i;str[j];j++)

str[j]=str[j+1];}

str[i]=0;

}



问题来自: 编程题真题

共 4 个回答

    嘿嘿大人 一代宗师 3927天前

    你的问题出在,如果有两个及其以上的空格你得这个程序就不能达到题目的要求,因为你将后面的空格移动到了前面来之后,你得if却不会回头去判断已经判断过的元素空间,所以只要有两个以上的空格相邻就会出现错误;blob.png

    最佳答案

    嘿嘿大人 一代宗师 3927天前

    只加一个就可以使其正确:

    int i,j;


    for(i=0;str[i];i++)


    if(str[i]==' ')


    {for(j=i;str[j];j++)


    str[j]=str[j+1];i--;}


    str[i]=0;

    增加红色部分语句就可以正确运行

    No more 圈内达人 3927天前

    回复 嘿嘿大人:666

    嘿嘿大人 一代宗师 3927天前

    回复 No more:其实用题目答案的方法更加好理解,也简单点,不过尊重你得原创,给你改一下比较好,加油吧,思路其实是对的,就是考虑不完善而已

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题