我编写了一个函数,它接收一个字符串,更新它,然后返回相同的字符串,但是做了一些更改。当我试图复制那个字符串以便将其更改为数组时,我得到了错误消息“数组初始化器必须是初始化器列表或字符串文字”。下面是我得到错误的地方:
string replace(string word)
{
char updated[] = word; // The error points out this line
}
>>> // error: array initializer must be an initializer list or string literal
// char updated[] = word;
^
我试图创建一个字符数组,以便从字符串文字形成字符串。但是,它似乎不起作用。现在,我只想更好地了解字符数组如何工作以及为什么它不起作用。提前感谢!
2条答案
按热度按时间hkmswyz61#
您需要将
strcpy
/memcpy
从word
转移到updated
,但还需要为updated
分配内存(malloc
)。你的
return
不应该是一个string
,它是cs50
在程序退出时自动释放(通过一个atexit
回调)的typedef
forchar*
,因为你的手动分配不会自动释放。你应该返回一个char*
,然后你再free
。q7solyqu2#
char updated[] = word;
在C中无效,因为C语言没有构造函数。您需要: