在此代码中:

#include <stdio.h>
void givetome(char** skey);
int main(int argc, const char * argv[]) {
    char *skey[5];
    givetome(&skey[5]);
    printf("%s\n",*skey);
    return 0;
}
void givetome(char **skey){
    char f[5]={'g','h','f','d','s'};
    for (int i=0; i<5; i++) {
        *skey[i]=f[i];
    }
}

我无法将值从向量“f”复制到向量“skey”。有人帮忙吗?

最佳答案

使用givetome(&skey[5]),开始在skey结尾处分配字符,从而超过数组边界。使用givetome(&skey[0])或简单的givetome(skey)应该可以工作。
顺便说一下:当您将结果作为字符串打印时,您需要用'\0'终止字符串:

#include <stdio.h>
void givetome(char* skey);
int main(int argc, const char * argv[]) {
    char skey[6];
    givetome(skey);
    skey[5] = '\0';
    printf("%s\n",skey);
    return 0;
}
void givetome(char *skey){
    char f[5]={'g','h','f','d','s'};
    for (int i=0; i<5; i++) {
        skey[i]=f[i];
    }
}

08-19 19:42