gpt4 book ai didi

c - 在 C 解决方案段错误中反转字符串

转载 作者:太空狗 更新时间:2023-10-29 17:26:37 24 4
gpt4 key购买 nike

我在 C 中提出了以下用于反转字符串的解决方案:

#include <stdio.h>

void reverse(char * head);

void main() {

char * s = "sample text";
reverse(s);
printf("%s", s);
}

void reverse(char * head) {

char * end = head;
char tmp;

if (!head || !(*head)) return;

while(*end) ++end;

--end;

while (head < end) {
tmp = *head;
*head++ = *end;
*end-- = tmp;
}
}

但是我的解决方案是段错误。根据 GDB,违规行如下:

*head++ = *end;

该行在 while 循环的第一次迭代时出现段错误。 end 指向字符串“t”的最后一个字符,head 指向字符串的开头。那为什么这行不通呢?

最佳答案

改变

char * s = "sample text";

char s[] = "sample text";

“示例文本”是一个字符串文字,它可能驻留在地址空间的只读部分。使用数组语法可确保将此字符串复制到可写的堆栈。

关于c - 在 C 解决方案段错误中反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5220206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com