gpt4 book ai didi

在处理反转字符串的函数时进行 Coredump

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:04 24 4
gpt4 key购买 nike

#include  <stdio.h>
#include <string.h>

main()
{
char tmpChar;
char *str_1 = "Hello";

int index;
int len = strlen(str_1);
for (int i = 0; i < len/2; i++)
{
index = len - 1- i;
tmpChar = str_1[len - i -1];
str_1[index] = str_1[i]; <<<<<--------------- core dumps at this point. Not sure why
str_1[i] = tmpChar;
printf("str_1[%d] = %c\n", i, str_1[i]);
}
str_1[len] = '\0';
printf("str_1 = %s\n", str_1);
}

最佳答案

您正在尝试修改调用未定义行为的字符串文字的内容。字符串文字通常存储在内存的只读部分,并具有静态存储持续时间。

char *str_1 = "你好";。在这种情况下,"Hello" 是一个字符串文字(存储在只读部分),您正试图通过这样做来修改内容

str_1[index] = str_1[i];

不是使 str_1 成为指向文字的指针 [即char *str_1 = "Hello"] 使其成为一个字符数组,即 char str_1[] = "Hello"。文字的内容将被复制到堆栈上,如果您随后尝试修改内容,您将不会遇到任何段错误。

关于在处理反转字符串的函数时进行 Coredump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725876/

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