【发布时间】:2014-03-30 22:56:19
【问题描述】:
我在 C 中编写了这个函数来反转字符串,但是当切换字符串中的字符时程序崩溃了。我不知道是什么原因造成的,因此我们将不胜感激。
void reverse(char s[])
{
char c;
int i;
int j;
for (i = 0, j = (strlen(s) - 1); i < j; i++, j--)
{
c = s[i];
s[i] = s[j]; //An error occurs here
s[j] = c;
}
printf("%s", s);
}
main()
{
reverse("Example");
}
【问题讨论】:
-
您无法更改字符串文字。改用 char 数组
-
你应该创建一个新字符串,并返回(或打印)那个
-
@user3277234 你知道,在函数中,数组实际上是指针(也就是说,你有
char *s,而不是char s[])。更改 char 指针中的单个字符是未定义的行为。所以请按照@Mathias711 的建议创建一个新字符串。 -
@Diti 修改单个或多个字符是完全有效的。真正的罪魁祸首是字符串文字,
s指向。