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;
}
这是我正在测试的源代码。
一个问题是当我使用 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;
}
有关 strdup() 的更多详细信息,请参阅此答案:https://stackoverflow.com/questions/252782/strdup-what-does-it-do-in-c
关于c - 在 c 中将 const char* 转换为 char* 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9557275/