gpt4 book ai didi

c - 如何在 C 中使用 snprintf 将字符串连接到结构中的 void*

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:13 24 4
gpt4 key购买 nike

我正在尝试使用 snprintf 将字符串连接到 void*,但我遇到了段错误。

  typedef struct __buf{
void* ptr;
size_t len;
}

buf val = {NULL, 100};

int main(){
snprintf(val->ptr, val->len, "%s%s", "hello", "world");
return 0;
}

最佳答案

通过做

buf val = {NULL, 100};

val.ptr 指向NULL,当然snprintf 会失败。你需要为其分配内存:

int main(void)
{
val.ptr = calloc(val.len, 1);
if(val.ptr == NULL)
{
fprintf(stderr, "not enough memory\n");
return 1;
}

snprintf(val->ptr, val->len, "%s%s", "hello", "world");

free(val.ptr);

return 0;
}

注意

val->ptr = (void *)(strcat("hello","world"));

是非常错误的。 strcat 的第一个参数不能是指向字符串的指针文字,因为修改字符串文字会产生未定义的行为,并且在大多数系统上,字符串文字存储在只读内存中。您将需要一个数组,您可以在其中修改数组中的字符:

char str[20] = "hello";
strcat(str, "world");

关于c - 如何在 C 中使用 snprintf 将字符串连接到结构中的 void*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49639736/

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