Другие языки программирования и технологии

Программа по переводу из нижнего в верхний регистр проблема, язык си.

исходник:
#include
int main()
{
int c;
c = getchar();
while (c != EOF) {
c=c-32;
putchar(c);
c = getchar();
}
return 0;
}
1)Вопрос, как в один putchar сделать и переменную "c" и перенос строки \n?
2)Почему у меня выходит знак непонятный
В один путчар нельзя запихать и символ и перенос строки. Перенос строки - это отдельный символ
'\n'
непонятные символы появляются от того, что нажатие клавиши ввода передает в поток символ ввода, который у тебя преобразуется по формуле в такую хренотень.
Для корректного преобразования переменная c должна иметь тип char
Вычитать следует не константу 32, а разность между заглавной и строчной буквой.
Лучше еще проверять, введена ли буква вместо непонятной лабуды
Итого имеем

#include < stdio.h >

int main(){
char c;
while ((c = getchar()) != EOF){
if (c >= 'a' && c <= 'z') putchar (c + 'A' - 'a');
else putchar (c);
}
return 0;
}
Ильхан ..........
Ильхан ..........
25 107
Лучший ответ
#include < stdio.h >
#include < ctype.h >

int main() {
puts("Ctrl+C to exit");
for(;;) putchar(toupper(getchar()));
}

P.S: Несмотря на простоту благодаря буферизации можно спокойно вводить хоть предложение - оно будет преобразовано как предложение.

По поводу вопросов -
1 - Никак. putchar выводит один символ. Для вывода строки есть н-р puts или printf("%c\n", c); ну или putchar(символ); putchar('\n');
2 - это символ перевода строки - 20, т. к. Вы не проверяете какой символ вообще поступил и стоит ли от него отнимать 20. Кст лучше сделать 'a'-'A' (т. е. c -= 'a'-'A' );
Попробуйте
char c = '\n'; c = c - 20; putchar(c); //Будет этот-же символ, что у Вас.
ИХ
Иван Ходырев
84 764