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)结果是一样的????? 展开
{
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)结果是一样的????? 展开
6个回答
展开全部
不晓得你如何测试的,具体结果又是什么?
我替你修改了下,完成了你想要的功能,并且,只有返回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是指向字符串开始。
而实际应该根据你函数要实现的具体需求而返回不同的指针。
看来是我弹琴了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可能一样啊,你这个函数的作用就是检索数组buf[ ]的元素,然后刨除是空格的部分以后赋值给数组str[ ],然后输出数组str[ ]的初始指针。
在检索的过程中,数组str跟buf的指针都已经累加了,已经不是初始地址,唯一没有改变的只有指针p。
不知道是否解释明白了你的问题,不明白请继续追问。
在检索的过程中,数组str跟buf的指针都已经累加了,已经不是初始地址,唯一没有改变的只有指针p。
不知道是否解释明白了你的问题,不明白请继续追问。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把指针看出数组就行了其实就是返回了输入形参的首地址回去,所以应该是一样的(这个程序应该是去掉buf中的空格原来的相对位置不变的函数)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(*buf==" ")/*如果*buf等于空格*/ //不能拿字符和字符串比较,改为:if(*buf==' ')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为buf[i] i=1~n 都是‘\0';
你的循环没执行!!!
你的循环没执行!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询