【发布时间】:2015-05-14 04:51:02
【问题描述】:
我有一个二维字符数组要连接成一个数组。它有一个错误:
错误 C2664: 'strcat' : 无法将参数 1 从 'char *[80]' 转换为 'char *'
代码如下:
char *article[5] = {"the", "a", "one", "some", "any"};
char *sentence[80];
num = rand() % 5;
for(int x = 0; x < strlen(article[num]); x++){
strcat(sentence, article[num][x]); //a random element will be concatinated to the sentence array
}
【问题讨论】:
-
将
char *sentence[80]更改为char sentence[80] -
你不需要for循环......
strcat(sentence, article[num])应该足够strcat复制整个字符串。 -
我尝试了你的建议,但它显示了一些奇怪的字符,而不是文章数组中的字符。
-
你不能连接到一个不存在的 ASCIIZ 字符串,并且在你的代码中你没有初始化
sentence所以它不包含一个 ASCIIZ 字符串并且是非法的读取:这不是使用strcat的合适前提条件。尝试char sentence[80] = { '\0' };或在sentence的定义和strcat之间添加sentence[0] = '\0';。我不确定你想用循环做什么:你的意思是随机选择一篇文章连接,然后连接另一篇文章,直到你连接 5? -
@TonyD 是的,初始化工作。是的,你是对的,我正在连接随机文章,直到我得到 5。但是这里的循环可以在单个索引中显示所有字符,如果我删除循环,它只会连接单词的第一个字母。跨度>