请耐心等待我,因为我对C来说比较新。
我正在尝试创建一个函数,它可以将音符的名称(即D或D#)作为参数,并使用第二个参数返回其相应的midi音符编号(midi number table)的值对于八度音阶。
但是,我似乎遇到了字符串初始化或在函数中使用它的问题。这是我写的功能:
int midi_number(char note[], int octave)
{
int midiNumber
if (note[1] = '#')
{
switch(note[0])
{
case 'C': case 'c':
midiNumber = 25;
break;
case 'D': case 'd':
midiNumber = 27;
break;
...
}
}
else
{
switch(note[0])
{
case 'C': case 'c':
midiNumber = 24;
break;
case 'D': case 'd':
midiNumber = 26;
break;
...
}
}
return (midiNumber + (octave * 12))
}
然后我按如下方式调用该函数:
midi_number('C#', 1);
希望这能够实现我想要实现的目标。我研究过指针和数组,但我看不出它是如何应用于我正在做的事情。
任何帮助都非常感谢!
答案 0 :(得分:0)
note[1] = '#'
将 '#'
分配给note[1]
,而非比较它们。
你的if语句中需要note[1] == '#'
。