gpt4 book ai didi

c - c中的memcpy命令

转载 作者:太空狗 更新时间:2023-10-29 15:46:11 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<string.h>
int main()
{
unsigned char *s;
unsigned char a[30]="Hello world welcome";
memcpy(s,&a,15);
printf("%s",s);
return 0;
}

这给我一个段错误。请帮我解决这个错误

最佳答案

您需要为 分配内存。就目前而言,它只是一个未初始化的指针(很可能)指向任何地方:

unsigned char *s = malloc(16);

与所有内存分配一样,当您使用完它时应该将其释放:

free(s);

编辑:另一个错误(我忽略了)是您需要在调用 memcpy 后终止 NULL。

memcpy(s,a,15);
s[15] = '\0';

或者,您可以使用 strcpy(),并将字符串截断为 15 个字符,但是您需要分配足够的空间来存储所有 a(包括它的NULL 终止符):

unsigned char a[30]="Hello world welcome";
unsigned char *s = malloc(strlen(a) + 1); // Allocate
strcpy(s,a); // Copy entire string
s[15] = '\0'; // Truncate to 15 characters by inserting NULL.
printf("%s",s);
free(s); // Free s

关于c - c中的memcpy命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065890/

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