我可以在不分配第二个的情况下将一个 char 指针转换为另一个吗?
Can I strcpy a char pointer into another without allocating the second one?
我想将一个 char *
字符串复制到另一个 char *
变量中,因此我将相同的字符串两次存储到这两个 char *
变量中,但它们并不相互依赖,所以如果我对第一个进行 free
,我就不会丢失第二个的数据。
我的问题是,我可以只执行 strcpy 而不分配第二个 char *
字符串吗?以下选项是否正确/不正确?
选项 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 );
我想将一个 char *
字符串复制到另一个 char *
变量中,因此我将相同的字符串两次存储到这两个 char *
变量中,但它们并不相互依赖,所以如果我对第一个进行 free
,我就不会丢失第二个的数据。
我的问题是,我可以只执行 strcpy 而不分配第二个 char *
字符串吗?以下选项是否正确/不正确?
选项 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 );