gpt4 book ai didi

c - 简单的字符串复制,但 memcpy 不起作用

转载 作者:行者123 更新时间:2023-11-30 20:02:55 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main()
{
unsigned char str[] = "abcdefg";
unsigned char *str1 = (unsigned char*)malloc(sizeof(str) -1);

memcpy(str1, str, (sizeof(str)-1) );

for(int i = 0; i<(sizeof(str1)); i++)
printf("%c", str1[i]);

free(str1);
}

我想复制字符串strstr1但输出是

abcd

这意味着仅复制指针字节(4字节)。

我尝试

printf("%d", sizeof(str)-1 );

它的输出是7

我的错误是什么?

最佳答案

it mean that only pointer byte(4byte) is copied.

不,事实并非如此。您假设您的打印输出是正确的,但事实并非如此。您可以在数组上使用 sizeof,但不能在指针上使用。好吧,你可以,但这意味着不同的东西。

一切都被复制了。您只是打印前四个字符。更改为:

for(int i = 0; i<(sizeof(str) - 1); i++)

另外,不要强制转换 malloc。原因如下:Do I cast the result of malloc?

关于c - 简单的字符串复制,但 memcpy 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57942547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com