我正在尝试创建一个非递归方法来交换 c 样式字符串。它在 Swap 方法中引发异常。无法找出问题所在。
void Swap(char *a, char* b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
void Reverse_String(char * str, int length)
{
for(int i=0 ; i <= length/2; i++) //do till the middle
{
Swap(str+i, str+length - i);
}
}
编辑:我知道有更奇特的方法可以做到这一点。但由于我正在学习,想知道代码的问题。
它在 Swap 方法中引发异常。无法找出问题所在。
不,没有。创建临时角色并分配角色不可能引发异常。但是,如果您的指针不指向您拥有的内存块,则可能会发生访问冲突。
The Reverse_String()
函数看起来不错,假设str
至少指向length
可写内存的字节数。您的问题中没有足够的上下文来推断这一点。我怀疑您传递了无效参数。您需要展示您的通话方式Reverse_String()
以便我们确定呼叫是否有效。
如果你正在写这样的东西:
char * str = "Foo";
Reverse_String(str, 3);
printf("Reversed: '%s'.\n", str);
那么你肯定会遇到访问冲突,因为str
指向只读存储器。请尝试使用以下语法:
char str[] = "Foo";
Reverse_String(str, 3);
printf("Reversed: '%s'.\n", str);
这实际上会复制"Foo"
字符串到您可以覆盖的本地缓冲区中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)