用指针反向输出字符串
程序的功能是实现字符串的反向赋值,即源字符串为“abcde”的话,则输出字符串为“edcba”。指出其中的错误并改正程序,请不要改变程序的整体框架。
char * reserveString(const char *str)
{
char * p = NULL;
unsigned int len = strlen(str);
int i = 0;
if(len >= 0)
{
for( i = len; i > 0; i--)
{
*p = *(str + i);
p++;
}
}
else
{
p = NULL;
}
return p;
}
main()
{
char p[] = “Hello World!”;
char *rp = reserveString(p);
printf(“%s\n%s”,p,rp);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这是一道面试题 ,希望高手帮忙看看
p指哪儿去了?for的条件也不对啊。
贴代码能用
复制代码
char *rp = reserveString(p);这句代码能不能这样写的啊。好郁闷啊。。而且好像程序里面没有给指针分配具体的内存空间吧。。
你p指向的内存中哪里,你直接拿来个指针就赋值?char *p是函数内部的变量,他是在栈上的,函数返回的时候,这个变量就没了,你返回的是什么地址?起码也要先在堆上分配内存给p,再操作啊。
至于赋值的过程,应该很简单了,先判断字符串的长度,然后读指针从后往前减,写指针从头开始加,最后填个0.就行了。
这个函数的功能就是将HELLOWORLD反向输出,输出DLROWOLLEH
本帖最后由 ljsdaya 于 2011-04-21 21:57 编辑
回复 1# yao_68
复制代码刚刚开始先if(len <= 0) return 0;就好拉~~
按照你的意思可以这样:(这是其中一种方法,其它的方法至少有三种以上)
复制代码