首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法修改char数组

无法修改char数组
EN

Stack Overflow用户
提问于 2013-01-18 17:48:12
回答 5查看 32.8K关注 0票数 5

考虑下面的代码。

代码语言:javascript
运行
复制
char message[]="foo";

void main(void){
    message[] = "bar";
}

为什么MPLAB IDE v8.63中存在语法错误?我只是尝试更改字符数组的值。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-18 17:53:22

在声明之后不能像那样使用字符数组。如果你想给你的字符数组赋值,你可以这样做:

代码语言:javascript
运行
复制
strcpy(message, "bar");
票数 11
EN

Stack Overflow用户

发布于 2013-01-18 17:53:34

像这样的任务

代码语言:javascript
运行
复制
message[] = "bar";

代码语言:javascript
运行
复制
message = "bar";

C语言不支持。

初始赋值之所以有效,是因为它实际上是伪装成赋值的数组初始化。编译器解释

代码语言:javascript
运行
复制
char message[]="foo";

作为

代码语言:javascript
运行
复制
char message[4] = {'f', 'o', 'o', '\0'};

实际上这里没有涉及到字符串文字"foo"

但当你试着

代码语言:javascript
运行
复制
message = "bar";

"bar“被解释为实际的字符串文字,不仅如此,而且message不是一个可修改的左值,即。你不能给它赋值。如果你想修改你的数组,你必须一个字符一个字符地修改:

代码语言:javascript
运行
复制
message[0] = 'b';
message[1] = 'a';

等,或者(最好)使用一个可以为您完成此任务的库函数,如strcpy()。

票数 10
EN

Stack Overflow用户

发布于 2013-01-18 17:52:13

只有在初始化时声明char数组才能做到这一点

代码语言:javascript
运行
复制
message[] = "bar";

你不能在你的代码中这样做

要修改它,您可以使用<string.h>中的strcpy

代码语言:javascript
运行
复制
strcpy(message, "bar");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14396202

复制
相关文章

相似问题

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