【问题标题】:Passing a character string to a function parameter in C [closed]将字符串传递给C中的函数参数[关闭]
【发布时间】:2016-04-05 16:56:12
【问题描述】:

请耐心等待,因为我对 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);

希望这能理解我想要实现的目标。我研究过指针和数组,但我看不出它如何适用于我正在做的事情。

非常感谢任何帮助!

【问题讨论】:

  • 您对 character 文字使用单引号 ',对字符串文字使用双引号 "
  • 这甚至不会编译。类型不匹配、缺少分号等
  • 另外,想想比较运算符和赋值运算符的区别。
  • 我上面的两点应该已经被几乎所有好的初学者书籍解释过了。也许你应该扔掉你拥有的那个和find another one

标签: c string function parameter-passing


【解决方案1】:

note[1] = '#' 分配 '#'note[1],而不是比较它们。

您的 if 语句中需要 note[1] == '#'

【讨论】:

  • 谢谢!非常愚蠢的错误。那,加上清理语法问题让它工作了。
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
相关资源
最近更新 更多