当我尝试将结构中的char *类型的元素设置为特定字符串时,C程序崩溃?

橙色插座

我的C程序有一个奇怪的问题。我试图跟踪在我的小游戏中创建的武器的名称和奖励,但是,初始化了几把武器后程序崩溃了。

这是我的武器结构:

typedef struct weaponTag {
    char *name;
    int bonus;
} weaponNode;

在这里,我为制造6种不同的武器分配了足够的内存:

weaponNode *wep = malloc(sizeof(weaponNode) * 6);
initializeWeapons(&wep);

initializeWeapons使用wep之前创建的的地址进行调用

void initializeWeapons(weaponNode **wep)
{
    printf("Initializing weapons...\n");
    setWeapon(wep[0], "Iron sword", 2);
    setWeapon(wep[1], "Steel sword", 4);
    setWeapon(wep[2], "Mithril sword", 7);
    setWeapon(wep[3], "Adamantine sword", 11);
    setWeapon(wep[4], "Dark Magic sword", 16);
    setWeapon(wep[5], "Diamond sword", 23);
}

然后setWeapon我呼吁要创建的每种武器:

void setWeapon(weaponNode *wep, char *name, int bonus)
{
    wep->name = name;
    wep->bonus = bonus;
}

当我运行此程序时,它可以用于钢铁剑,但是一旦到达秘银剑,它就会卡在上面wep->name = name

有人有什么想法吗?

一些程序员哥们

当您传递一个指向weaponNodeinitializeWeapons函数的指针的指针时,这几乎就像传递一个指针数组一样,而这并不是您所拥有的。

initializeWeapons函数更改为仅获取指向weaponNode结构的指针,然后将其传递给(例如)setWeapon使用指针算术,setWeapon(wep + 1, ...)或在此处使用address-of运算符setWeapon(&wep[1], ...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

每当我尝试读取字符串时,我的 C++ 程序就会崩溃

当我尝试解析字符串时,我的应用程序崩溃

每当我尝试将字符串强制转换为PySpark中的DecimalType时,都会返回Null值

当我尝试在 Typescript 中检查字符串值时,此条件将始终返回 true

当我的列在 Sql Server 2017 和 C# 中的类型为字符串时,如何按日期排序?

当我尝试通过 push_back() 添加字符串的特定字符时,它会引发类型转换错误

当我尝试将类型“字符串”分配给 @Input 时,类型“字符串”不可分配给类型“PostCard 布局”

尝试对角显示字符串时出现C ++程序崩溃

尝试使用React-bootstrap InputGroup时获取“元素类型无效:预期为字符串(...)”

当我尝试设置onClickListener时,应用程序崩溃

当我尝试对指针数组中的数组进行free()时,程序在特定值上崩溃

当我尝试将响应正文打印为字符串时,golang 发出奇怪的哔哔声

当我尝试在结构中实现向量时,我得到了垃圾值,如何删除这些垃圾值

当我尝试将文件内容输入到列表框中时,程序冻结

当尝试将输入字符关联到我的结构时,程序崩溃

C ++将char值设置为字符串?

当我尝试在newtonsoft.json中使用Jsonserialize时,将null返回给字符串

当我尝试将元素添加到Xamarin.Forms应用程序中的ObservableCollection时,发生InvalidCastException

当我将字符串转换为 int 时,我的 android studio 崩溃了

创建子类或将类型设置为字符串?

当我尝试增加变量时,无法将变量与字典中的值进行比较

当我尝试将dateTime字段添加到表中时出错

当我尝试插入ip2long整数时,将错误的整数插入表中

当我尝试将值输入到交易表中时,此代码出现问题

将元素的innerHTML 设置为随机字符串

当我尝试在 JSTL 标记中连接字符串时。发生错误

尝试将图像 URL 作为字符串获取时应用程序崩溃

将网格视图的特定元素存储为字符串

将特定字符串的feild设置为“ 1”