c-我可以在不分配第二个指针的情况下将一个char指针插入另一个指针吗



我想将一个char *字符串复制到另一个char *变量中,这样我就可以将同一个字符串存储到这两个char *变量中两次,但它们并不相互依赖,所以如果我对第一个生成free,我就不会丢失第二个的数据。

我的问题是,我可以在不分配第二个char *字符串的情况下执行strcpy吗?以下选项是否正确/不正确?

选项1

//char *string_1 is already allocated and contains a valid string
char *string_2;
strcpy(string_1, string_2);
printf("%s", string_2);

选项2

//char *string_1 is already allocated and contains a valid string
char *string_2;
string_2 = malloc(((int) strlen(string_1)) * sizeof(char));
strcpy(string_1, string_2);
printf("%s", string_2);

在这两个选项中都应有

strcpy(string_2, string_1);

而不是

strcpy(string_1, string_2);

两个选项都不正确。

在第一个选项中,没有分配要复制字符串的内存,指针string_2也不指向这样的内存。

char *string_2;

第二个选项不正确,因为您分配的内存不足。代替

string_2 = malloc(((int) strlen(string_2)) * sizeof(char));

如果有一个打字错误而不是strlen( string_2 ),那么应该是strlen( string_1 ),你必须至少写

string_2 = malloc( ( strlen(string_1) + 1 ) * sizeof(char));

或者只是

string_2 = malloc( strlen(string_1) + 1 );

最新更新