gpt4 book ai didi

CS50 pset3 音乐段错误

转载 作者:行者123 更新时间:2023-11-30 18:46:44 25 4
gpt4 key购买 nike

今天我完成了音乐项目,或者至少我认为我已经完成了。在 helper.c 上,当我运行 make 时,它​​会同时生成音符和合成器文件,并且没有错误。但是当我想运行 ./notes 时,它会给我段错误错误。即使当我使用 check50 运行程序时,它也给了我这个错误:

failed to execute program due to segmentation fault

我个人认为这可能是因为将 string 转为 int 或者我从 string 中获取音符的方式。首先,我引入了一个用于记录笔记的字符串和一个用于记录笔记的 ovtav 的 int。

字符串注释类似于 D4 或 C#4

所以我将复制这部分内容,以便与您确认我是否正确完成。

string noteletter="";
int noteoctav;
if (strlen(note) == 3)
{
noteletter[0] = note[0];
noteletter[1] = note[1];
noteoctav = note[2] - '0';
}
if (strlen(note)== 2)
{
noteletter[0] = note[0];
noteoctav = note[1] - '0';
}

更新

这里我添加了完整的代码,以便您可以看到我正在尝试做什么。

最佳答案

我可以看到两个问题(假设stringchar*的typedef)

如果 noteletter 的长度为 0(值 = ""),那么您认为 noteletter[1] 正在做什么?

即使将 noteletter 设置为更大的值(例如 noteletter = "ABC";) - 写入文字字符串也是未定义的行为。

尝试使用 char noteletter[3] = { 0 }; 来获得(快速浏览)看起来足够大的内容。

另一个可能的问题:如果 noteNULL 或无效,则 strlen(note) 不安全。

关于CS50 pset3 音乐段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50126758/

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