2013-03-05 5 views
-7

Когда я запускаю и компилирую код, я получаю ошибки, которые A и Z и a и c обе не определены, как я могу это исправить?Создайте свой собственный toUpper и toLower в C

char toUpper (char c) { 

    if (C >= a + c <= z) 
     -32; 
    return c; 

} // ends toUpper 

char toLower (char c) { 

    if (c >= A + c <= Z) 
     +32; 

} // ends toUpper 
+6

Вы можете найти книгу по C и изучить его. –

+0

Ну, это не переменные. Какую книгу вы используете? –

+0

Если вам нужно обратиться за помощью, то ваш метод обучения явно не работает. Какую книгу ты читаешь? – Sebivor

ответ

3

Цитата букв в одинарные кавычки, чтобы сформировать литералов характер, например:

'a' 
+2

Не единственная проблема ... – nhahtdh

+0

Какие еще плохие вещи скрываются в этом коде за пределами «' -32; '" & "' + 32'? Я считаю, по крайней мере, две дополнительные проблемы. :-) –

1

Краткое резюме:

  • Вам нужно в кавычки символьных констант.
  • Ваша функция должна возвращать то, что является символом верхнего или нижнего регистра.
  • При проверке двух условий, используйте && для «логического и» и || для «логическое или»

Логическое и верно, если обе стороны && верно. Логично или верно, если ОДНА сторона || истинна.

Я не «редактирую ваш код, чтобы исправить это», потому что я уверен, что вы учитесь писать C, и если бы я просто набрал «правильный код» здесь, вы просто скопировали бы его и вставьте его в свой код и ничего не узнайте.

1

В вашем коде есть две основные проблемы.

Во-первых, вы используете a вместо 'a'. Когда компилятор видит a, он пытается интерпретировать его как идентификатор. Это означает, что он должен ссылаться на аргумент, локальный, имя функции и т. Д. Цель вашего кода, хотя для него означает символ a (первая буква алфавита). Помещение одиночных кавычек вокруг одной буквы заставляет компилятор интерпретировать его как символьный литерал.

Вторая проблема заключается в том, что ваше условное утверждение неверно. Вы пытаетесь выяснить, больше ли C, равное 'a' и не превышающее 'z'. Этот тип булевского сравнение делается с && оператора в C. Это только справедливо, если и левая и правая рука && также верно

if (C >= 'a' && c <= 'z') 
+0

«Почему не' if (c> = 'a' && c <= 'z') 'работает, когда набор символов является EBCDIC?" ... Просто используйте 'islower', ffs! – Sebivor