c - 逐字复制数组与逐字母复制
问题描述
我目前正在使用以下方式复制字符串数组:
void copy_sentinel_array(char ** buffer, char ** list) {
while (*list) {
*buffer = malloc(sizeof(char) * strlen(*list) + 1);
*buffer++ = *list++;
}
*buffer = NULL;
return;
}
它很简单并且工作正常。但是,我在逐个字母地复制单词时遇到了更多麻烦(例如,我可以将字母大写或小写)。例如:
void copy_sentinel_array(char ** buffer, char ** list) {
while (*list) {
*buffer = malloc(sizeof(char) * strlen(*list) + );
for (int i=0; i<=strlen(*list); i++)
(*buffer)[i] = tolower((*list)[i]); // let's lowercase it
buffer++;
list++;
}
*buffer = NULL;
return;
}
按单词然后按字母进行复制的正确方法是什么?
解决方案
问题是运算符优先级。*buffer[i]
等效于*(buffer[i])
,但您想要的是(*buffer)[i]
(对于 也是如此list
)。
如果您不需要处理每个字符,则可以使用
strcpy(*buffer, *list);