在此代码中:
#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];
}
}