2016-04-05 2 views
-1

Медведь со мной, как я относительно новым для C.Передача строки символов в качестве параметра функции в C

Я пытаюсь создать функцию, которая могла бы взять имена музыкальных нот (т.е. D или D #) в качестве аргумента, и вернуть значение соответствующего номера ноты миди (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); 

Надеюсь, это доносит мысль о том, что я пытаюсь добиться. Я исследовал указатели и массивы, но я не вижу, как это относится к тому, что я делаю.

Любая помощь массово ценится!

+2

Вы используете одинарные кавычки '' 'для символа * символа * и двойные кавычки' '' для строковых литералов. –

+0

Это даже не компилируется. Несоответствующие типы, точка с запятой и т. Д. – interjay

+2

Также подумайте о различии между операторы сравнения и назначения. –

ответ

0

note[1] = '#' является назначая'#' к note[1], не сравнивая их.

Вам необходимо note[1] == '#' внутри вашего оператора if.

+0

Спасибо, очень глупая ошибка. Это, плюс очистка синтаксических проблем, заставила его работать. – Harvs

Смежные вопросы