c - 在 c 中将 const char* 转换为 char* 的问题

标签 c char constants

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/

相关文章:

c - 如何解决 "expected expression before ' unsigned'"错误?

c - 在 C 中使用带有数组的循环

c - 在C中初始化一个数组

java - 是否可以延迟 C++ 中 const 变量的初始化,例如 Java 的 "blank final"功能?

java - 我如何在构造函数中将字段设置为常量

c - 在 C 中的两个服务器之间传递数据的最佳方式?

c - 加密过程工作一半

c - 如何刷新输入缓冲区? (C)

CountChars数组字符串循环函数字母出现次数

来自两个不同数组的字符匹配,尽管它们不同