我想将一个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 );