Как удалить дубликаты вывода в программе на C?
Я создал программу, которая принимает символ из пользовательского ввода. Он преобразует букву в верхний регистр и отобразит ее конечному пользователю.
Тем не менее, я получаю проблему с выводом, где я получаю двойное "Пожалуйста, введите символ в нижнем регистре:" и дополнительную строку ниже. Я не совсем уверен, что является причиной этого, но вот программа, которую я имею до сих пор:
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
// Converts lowercase letter to uppercase
int main()
{
bool continue_program = true;
printf("Program Running \n");
int lower, upper;
while (continue_program){
printf("Please enter a character in lower case:");
printf("\n");
int lower = getchar();
if(lower=='q' || lower=='Q'){
printf("Goodbye \n");
break;
} else {
upper = toupper(lower);
putchar(upper);
printf("\n");
}
}
return 0;
}
Пример вывода:
./a.out
Program Running
Please enter a character in lower case:
a
A
Please enter a character in lower case:
Please enter a character in lower case:
b
B
Please enter a character in lower case:
Please enter a character in lower case:
p
P
Please enter a character in lower case:
Please enter a character in lower case:
Q
Goodbye
1 ответ
Решение
Просто измените это:
int lower, upper;
чтобы:
char lower, upper;
и это:
int lower = getchar();
чтобы:
scanf(" %c", &lower);
//^ Space which 'eats' remaning '\n' in the buffer