gpt4 book ai didi

c - 尝试更改 char* 字符串中的符号时出现段错误

转载 作者:行者123 更新时间:2023-12-04 01:03:50 24 4
gpt4 key购买 nike

当我执行下一段代码时它运行良好

// Example program
#include <string.h>
#include <stdio.h>

int main()
{
char *dbString = strdup("172.0.0.1:5000");
char *port = strchr(dbString, ':');
printf("port = %s\n", port);
if (port)
*port++ = '\0';
printf("port = %s\n", port);
return 0;
}

但是如果我执行下一个代码,我会得到一个错误。

// Example program
#include <string.h>
#include <stdio.h>

int main()
{
char *port = (char*) ":5000";
printf("port = %s\n", port);
if (port)
*port++ = '\0';
printf("port = %s\n", port);
return 0;
}

你能解释一下错误的原因吗?

最佳答案

在您的第二个示例中,":5000" 是一个字符串文字。编译器将字符串文字放在只读内存部分。您正在尝试更改非法的字符串。

关于c - 尝试更改 char* 字符串中的符号时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67190688/

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