Я сделал реализацию toUpper(). Он не работает на 100%.Реализация C++ toUpper
Код:
char* toUpper(char* string)
{
char* sv = string;
while(*sv++ != '\0')
{
if(int(*sv) >= 97 || int(*sv) <= 122) //Only if it's a lower letter
*sv = char(*sv - 32);
}
return string;
}
Я знаю, что строчные буквы имеют номера от 97 до 122 (в ASCII) и заглавные буквы имеют номера от 65 до 90. Есть ровно 32 чисел между от нижней до верхней буквы. Поэтому я просто вычитал 32 из нижнего персонажа.
код, где я называю эту функцию: "? Что до"
char h[] = "Whats up?";
cout << toUpper(h) << endl;
я ожидал программу для вывода , но вместо этого я получил «ЧТО». Что я сделал не так?
Вы делаете это в образовательных целях? –
Цикл 'while' выключен одним символом (тот, который вы тестируете в предикате, не тот, который вы тестируете/изменяете в теле). Вы должны изменить его на соответствующий цикл 'for' или, по крайней мере, перенести инкремент указателя в конец тела цикла. – syam
@JohnDibling Да, почему? – Davlog