首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C中将const char*转换为char*?

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

Stack Overflow用户
提问于 2014-08-28 21:06:06
回答 6查看 208.3K关注 0票数 79

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

你知道如何在const char*char*之间转换吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-08-28 21:08:47

为了安全起见,您不要中断内容(例如,当这些字符串在您的代码或更高的代码中更改时),或者使您的程序崩溃(如果返回的字符串是文字,例如"hello I'm a literal string",并且您开始编辑它),请复制返回的字符串。

您可以使用strdup()来完成此任务,但请阅读small print。当然,如果您的平台上没有自己的版本,您也可以创建自己的版本。

票数 32
EN

Stack Overflow用户

发布于 2014-08-28 21:07:15

首先,你应该只在真正有必要的时候做这样的事情--例如,使用一些带有char*参数的老式API,这些参数没有被修改。如果API函数修改了最初为const的字符串,则这是未指明的行为,很可能会崩溃。

使用cast:

代码语言:javascript
复制
(char*)const_char_ptr
票数 65
EN

Stack Overflow用户

发布于 2014-08-28 21:11:57

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

代码语言:javascript
复制
char *strdup(const char *s1);

使用示例:

代码语言:javascript
复制
#include <string.h>

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

或strcpy/strncpy到您的缓冲区

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

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25549562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档