gpt4 book ai didi

c - Strcpy 将结构名称复制到 char 数组?

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

我有一个具有名称变量的结构,即:

l->name

我还有一个字符数组:

char highest1[50];

我想将 l->name 复制到 highest1[50],但我做不到。

我在这里做了什么违法的事情吗?

strcpy(highest1[50], l->name);

runtime error: index 50 out of bounds for type 'char [50]'

我尝试将 char[50] 增加到 char [99] 但后来我得到了:

runtime error - illegal array, pointer or other operation

关于致命的 ASAN 信号?

最佳答案

Am I doing anything illegal here:

strcpy(highest1[50], l->name);

是的,代码在这里做了非法的事情。

highest1[50] 是元素 50 的值,某个整数值,它被视为复制到的地址。

同样,对于 char Highest1[50];,尝试使用 highest1[50] 查找数组外部的值是未定义的行为(布)。

避免此类基本错误

1) 启用所有编译器警告以节省您的时间。 2) 以不溢出其大小的方式复制到 highest1[]

size_t len = strlen(l->name);
if (len >= sizeof highest1) Handle_Error();
else {
strcpy(highest1, l->name);
}

关于c - Strcpy 将结构名称复制到 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635693/

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