首页 > 解决方案 > 逐字复制数组与逐字母复制

问题描述

我目前正在使用以下方式复制字符串数组:

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;
}

按单词然后按字母进行复制的正确方法是什么?

标签: c

解决方案


问题是运算符优先级。*buffer[i]等效于*(buffer[i]),但您想要的是(*buffer)[i](对于 也是如此list)。

如果您不需要处理每个字符,则可以使用

strcpy(*buffer, *list);

推荐阅读