int A(const char* name){
name = "Here you GO!";
char* new_name;
//strcpy(new_name,name);
new_name = const_cast<char *>(name);
printf("%s\n", new_name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我正在测试的源代码.
一个问题是,当我使用时const_cast<char *>,它说它是未声明的.(我知道它可以在'g ++'编译下工作)另一个问题是当我尝试strcpy将它们组合在一起时,它会弹出分段错误.前提是我必须gcc whatevername.c -std=c99用来编译.
有人提出一些建议如何解决这个问题.非常感谢..
您正在获得分段错误,因为new_name无处可寻.
解决方案:为new_name分配内存.你可以调用malloc()然后使用strcpy(),或者调用strdup(),这将为你做两件事:
int A(const char* name){
name = "Here you GO!";
char* new_name = strdup(name);
printf("%s\n", new_name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有关strdup()的更多详细信息,请参阅此答案:https://stackoverflow.com/questions/252782/strdup-what-does-it-do-in-c
您需要为新字符串分配空间.你使用的是正确的轨道strcpy,因为const_cast只有C++.编辑:更好地使用strdupMiroslav建议.
int A(const char* name)
{
name = "Here you GO!";
char* new_name = malloc(strlen(name)+1);
if (new_name) {
strcpy(new_name,name);
printf("%s\n", new_name);
}
return 0;
]
Run Code Online (Sandbox Code Playgroud)