我试图将tmp
变量中的字符串存储在*ans[key]
变量中。在分配之后,我想清空tmp
变量,获取另一个字符串,并将其添加到*ans[key+1]
,依此类推。
问题是,如果我清空tmp
字符串,ans[key]
中的值也会被清空。
int main() {
char tmp[20] = "abc";
char* ans[20] = {0};
printf ("%s\n", tmp); // shows abc
ans[0] = tmp;
printf("%s\n", ans[0]); // shows abc
tmp[0] = 0;
printf("%s\n", ans[0]); // shows null
}
我想我错过了关于字符串数组或指针的东西。
答案 0 :(得分:1)
int main()
{
char tmp[20] = "abc";
char *ans[20] = {0};
printf("%s",tmp);
ans[0] = strdup(tmp); // allocate copy of tmp on heap
printf("%s",ans[0]);
tmp[0]=0;
printf("%s",ans[0]); // ans[0] not affected
}