加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – char *的写权限

发布时间:2020-12-16 10:39:51 所属栏目:百科 来源:网络整理
导读:Coincise问题:需要能够在c中修改char *的内容. 我有一个类似这样的函数:char * buffer =(char *)FUNCTION 现在我需要修改’缓冲’,例如做这样的缓冲[1] =“h”; 我尝试过的是以下内容: ????????char * string =“Hello World”; ?char buffer [65]; //我
Coincise问题:需要能够在c中修改char *的内容.

我有一个类似这样的函数:char * buffer =(char *)FUNCTION

现在我需要修改’缓冲’,例如做这样的缓冲[1] =“h”;

我尝试过的是以下内容:
????????char * string =“Hello World”;
?char buffer [65]; //我仍然需要知道确切的大小
?strcpy(buffer,string);
?buffer [1] =“r”;

我也尝试过malloc.
不幸的是,编译器总是抱怨以下内容:“无法从const char [2]转换为char”.这发生在Windows上.
我对g编译器没有这样的问题.

我查看了以下链接,但仍然无法做任何事情.
http://www.developerweb.net/forum/archive/index.php/t-3517.html
About character pointers in C
Is it possible to modify a string of char in C?

谢谢

解决方法

由于您的问题标记为C,我必须质疑您使用原始字母*的意图,除非您非常自信,否则不建议使用.

其次,char *或char []完全有效修改.您遇到的问题是您在“Hello World”中创建了一个const char *,然后尝试使其中的一个字符等于一个字符串.字符不是字符串. “r”是一个字符串,它是一个const char *.所以你试图将const char *等同于char,这是一个错误.你的意思是’r’,这是一个char.

更好的代码是:

std::string mystring((char*)FUNCTION); // assume that FUNCTION
                                       // will free it's own memory.
if (index < mystring.size())
    mystring[index] = 'r';
// mystring now cleans up it's own memory in all cases.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读