我想将一个char *
字符串复制到另一个char *
变量中,所以我将相同的字符串存储两次到这两个char *
变量中,但是它们彼此之间不依赖,所以如果我free
将第一个作为a ,则不会丢失数据第二个。
我的问题是,我可以不分配第二个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 );
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句