Я пытаюсь преобразовать все строчные буквы в прописные, используя таблицу ASCII! Это очень легко иметь дело, и я понял код. Проблема в том, что если между словами есть пробел, то программа изменит только первое слово и после пробела ничего не напечатает.
Пример
Word: Andreas Выдает: ANDREAS
Word: TeSt123Ha Выдает: TEST123HA
НО!!!
Word: Hello 45 Выдает: HELLO
после пробела ничего не печатает !
Я знаю, что пробел в таблице ASCII равен 32, и в своем коде я говорю программе, что если текущий код, который вы читаете, не находится между 97 и 122, то не вносите никаких изменений!
Но он все еще не работает!
char currentletter;
int i;
for (i=0; i<49; i++)
{
currentletter = str[i];
if ((currentletter > 96) && (currentletter < 123))
{
char newletter;
newletter = currentletter - 32;
str[i] = newletter;
}
else
{
str[i] = currentletter;
}
}
printf("%s\n", str);
str
— держу пари, что слов после пробела там даже нет (str
инициализируется с помощьюargv[1]
?) Что произойдет, если вы сделаетеprintf("%s\n", str);
до преобразования регистра код? - person Michael Burr   schedule 13.09.2014scanf("%s", str)
— еще один претендент на ввод одного слова. - person M Oehm   schedule 13.09.2014else
не является источником проблемы, но все же полностью избыточна. - person 5gon12eder   schedule 13.09.2014locale
(Linux) илиchcp
(Windows) для проверки. Конечно, в этих наборах символов есть больше букв, которые вы не учитываете. - person Tom Blodget   schedule 13.09.2014