c语言小程序问题

char*trimspace(char*buf){char*str;char*p;str=buf;p=buf;while(*buf!='\0'){if(*buf=="")... char * trimspace(char *buf)
{
char *str ;

char *p ;

str=buf ;

p=buf ;

while(*buf!='\0')

{
if(*buf==" ")/*如果*buf等于空格*/

buf ++ ;

else

*str++ = *buf++ ;

}

*str = '\0';

return (str) ;

}
/**********************************************************************************************
请问最后一句话return(str)为什么是对的啊???
结果和return(buf),return(p)结果都是一样的,为什么啊??
我认为只有return(p)是正确的,但是三种结果都是一样的啊。
请各位大神指点,小弟在此谢过!
********************************************************************************************/
if(*buf==" ")/*如果*buf等于空格*/

这句话错了 应该改为if(*buf==' ')
我想问的是为什么return (str) ;
和return(p),return(buf)结果是一样的?????
展开
 我来答
龚炜林
2013-04-25 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:584万
展开全部

不晓得你如何测试的,具体结果又是什么?

我替你修改了下,完成了你想要的功能,并且,只有返回p才是对的。

#include <stdio.h>
char * trimspace(char *buf)
{
char *str ;
char *p ;
str=buf ;
p=buf ;
while(*buf!='\0')
{
if(*buf==' ')/*如果*buf等于空格*/
buf ++ ;
else
*str++ = *buf++ ;
}
*str = '\0';
return (p) ;
}
int main()
{
char str[] = "ab cd d s";
printf("%s\n", trimspace(str));
return 0;
}
追问
if(*buf==" ")/*如果*buf等于空格*/ 
这句话错了 应该改为if(*buf==' ')
我想问的是为什么return (str) ;
和return(p),return(buf)结果是一样的?????
追答
同志,我回答正是对你的反问:
你如何测试知道结果是一样的?如果是正确的测试,不可能一样,buf和str都指向'\0',输出都是空白。唯有p是指向字符串开始。
而实际应该根据你函数要实现的具体需求而返回不同的指针。
看来是我弹琴了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我就一小虚
2013-04-25 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:121万
展开全部
不可能一样啊,你这个函数的作用就是检索数组buf[ ]的元素,然后刨除是空格的部分以后赋值给数组str[ ],然后输出数组str[ ]的初始指针。
在检索的过程中,数组str跟buf的指针都已经累加了,已经不是初始地址,唯一没有改变的只有指针p。
不知道是否解释明白了你的问题,不明白请继续追问。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
492924696lin
2013-04-25 · TA获得超过220个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:183万
展开全部
把指针看出数组就行了其实就是返回了输入形参的首地址回去,所以应该是一样的(这个程序应该是去掉buf中的空格原来的相对位置不变的函数)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戚文柏Ro
2013-04-25 · TA获得超过336个赞
知道小有建树答主
回答量:400
采纳率:100%
帮助的人:403万
展开全部
if(*buf==" ")/*如果*buf等于空格*/ //不能拿字符和字符串比较,改为:if(*buf==' ')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_whales
2013-04-25 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:509万
展开全部
因为buf[i] i=1~n 都是‘\0';
你的循环没执行!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式