我的普通C有點生疏,我目前試圖找出爲什麼第一個工作,第二個沒有。strcpy與目標指針和返回值
char *returnSomething(void) {
char *s = (char *) malloc(5 + 1);
strcpy(s, "Hello");
return s;
}
void dontReturnSomething(char *dest) {
char *s = (char *) malloc (5 + 1);
strcpy(s, "Hello");
dest = malloc(strlen(s) + 1);
strcpy(dest, s);
free(s);
}
int main(int argc, char *argv[]) {
char *first = returnSomething();
char *second = NULL;
dontReturnSomething(second);
printf("first: %s | second: %s", first, second);
}
它不是基本上做同樣的事情嗎?
你有一個比你需要更多的strcpy。你可以直接使用malloc dest,直接複製到那裏。 – Linuxios