Я только что с нуля запрограммировал программу, которая считала бы заглавные и строчные буквы и пробелы, независимо от того, что вводил пользователь.С тех пор я узнал, что код для этих конкретных функций уже был написан в другой библиотеке!У меня вопрос, как можно упростить весь код, который я написал ниже, с использованием
isupper(int c)
, islower(int c)
и isspace(int c)
, которые определены в ctype.h
.
#include <stdio.h>
int main(void){
int iochar, numdigits=0, numlower=0, numupper=0, numwhites=0;
printf("Please enter a phrase:\n\n");
while((iochar=getchar())!=EOF)
{
if ((iochar==' ')||(iochar=='\t')||(iochar=='\n'))
{
numwhites++;
putchar(iochar);
}
else
if((iochar>='0')&&(iochar<='9'))
{
numdigits++;
putchar(iochar);
}
else
if(('a'<=iochar)&&(iochar<='z'))
{
numlower++;
putchar(iochar-32);
}
else
if(('A'<=iochar)&&(iochar<='Z'))
{
numupper++;
putchar(iochar);
}
else
putchar(iochar);
}
printf("%d white characters, %d digits, ",numwhites,numdigits);
printf("%d lowercase have been converted to ",numlower);
printf("uppercase and %d uppercase.\n",numupper);
printf("\n\n");
return 0;}