如何在C中将const char*转换为char*?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1021)

在我的项目中有一个方法只返回一个const char*,而我需要一个char*字符串,因为API不接受const char*

知道怎么转换const char*char*

提问于
用户回答回答于

为了安全起见,你不要破坏东西(例如,当你的代码中更改这些字符串或进一步更新时),或者使程序崩溃(如果返回的字符串是文字的,例如"hello I'm a literal string"你开始编辑它),那就做一个返回字符串的副本。

你可以使用strdup()它,但阅读小字体。或者你可以创建自己的版本,如果你的平台上没有它。

问题仍然存在:为什么你需要一个char*,你不能改变你的代码,以便它可以使用const char*吗?

用户回答回答于

您可以使用strdup具有以下原型的函数

char *strdup(const char *s1);

使用示例:

#include <string.h>

char * my_str = strdup("My string literal!");
char * my_other_str = strdup(some_const_str);

或strcpy / strncpy到你的缓冲区

或者重写你的函数以const char *作为参数而不是char *在可能的地方使用,这样你就可以保留const

扫码关注云+社区

领取腾讯云代金券