字符串倒序问题,我下面写的这个字符串倒序函数怎么在运行时老出现内存访问冲突错误呢

wiyanzi 2007-12-27 02:03:37
下面的函数在运行到赋值语句 *head=*tail时报错,错误原因为:写入head指向的地址时发生访问冲突。
这到底是怎么回事呢???
谢谢帮助!
//将给定的字符串倒序
void strReverse(char * str)
{
char * head = str;
char * tail = str;
char temp;

if (NULL == str)
{
printf("parameter error!");
return;
}
//printf("%s \n", str);

while (*tail)
{
tail++;
}
tail--;

while (head < tail)
{
temp = *head;
*head = *tail; //此赋值语句运行时出现问题,
*tail = temp;

head++;
tail--;
}

//printf("%s \n", str);
}
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wiyanzi 2007-12-27
  • 打赏
  • 举报
回复
谢谢!
我知道了,已经明白了。
shaoze5 2007-12-27
  • 打赏
  • 举报
回复
这个样子改也不对了!
你指针指的都是常量区,常量区的值不可以改变的!在main中改成数组。
wiyanzi 2007-12-27
  • 打赏
  • 举报
回复
是啊 直接传的常量过来的。
我是在main函数使用 strReverse("1234abcd");直接来调用的。
但是我修改了一下
如下调用也还是同样的错误。
int main(void)
{
char * str2 = "1234abcd";
strReverse(str2);
return getchar();
}
shaoze5 2007-12-27
  • 打赏
  • 举报
回复
调用的部分了?估计你又传了个常量过来吧。

70,036

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧