我可以在不分配第二个char指针的情况下将char指针指向另一个吗?

用户名

我想将一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将指针分配给另一个指针,第二个指针是否指向与第一个指针相同的地址?

将值从一个表复制到另一个表,仅在第二个表具有特定值的情况下

在没有RAID1的情况下将文件从一个分区镜像到第二个磁盘上的另一个分区

如何将第二个屏幕与另一个屏幕分开?

可以将结构指针方法中的指针重新分配给另一个实例吗?

一个指针可以指向另一个指针而不是DNS压缩中的标签吗?

我可以在相同的cfswitch情况下使用另一个cfswitch语句吗

从指向其第二个成员的指针获取指向结构的指针是否合法?

将指向lambda函数的指针分配给指向另一个lambda函数的指针

将一个分配的指针分配给另一个分配的指针

获得第二个选择选项值后,如果存在第二个选项值,另一个 div 将隐藏

将第二个鼠标指针和键盘输入锁定到一个窗口

在另一个数组中查找数组中的值,然后匹配第二个值 Google Apps Script Javascript JSON API

无法在启用 VPC 的情况下从第一个调用第二个 Lambda

分配一个char指针数组

分配给另一个变量的变量是否会更改(原始变量更改),第二个变量会更改吗?

如何在不添加到第一个表的情况下将表行添加到第二个表中

在不使用双COM的情况下将第一个数组的元素复制到第二个

第二个命令行参数是指向数组还是指针数组的指针?

为什么pthread_join()的第二个参数是**,即指向指针的指针?

我可以在不使用栅格画的情况下将一个QImage添加到另一个QImage吗?

在一个指针上使用“删除”将删除第二个指针(二进制搜索树)

指向另一个指针(间接级别)的指针?

类型的指针指向另一个的指针

当指针指向的对象被另一个类的实例删除时重新分配指针

如何将一个指向对象的指针分配给另一个指向相同类的对象的指针?

从第二个父亲访问“ this”指针作为第一个父亲的指针是否安全?

是否有任何函数可以帮助我在不重复 SQL 中第一个表的行的情况下连接第二个表 ID

C ++-尝试创建指向一个节点(由另一个节点指向)内的指针的指针,对吗?