나는 사용자 입력에 관계없이 대소 문자와 공백을 카운트하는 프로그램을 처음부터 코딩했습니다. 그때부터 그 특정 기능에 대한 코드가 이미 다른 라이브러리에 미리 작성되어 있다는 것을 알았습니다! 내 질문은 내가 아래에 작성한 모든 코드가 ctype.h
에 정의되어C에서 다른 라이브러리 사용
isupper(int c)
, islower(int c)
및 isspace(int c)
의 사용을 단순화 할 수있는 방법이다.
#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;}
우수한. 지금은 훨씬 깨끗해 보입니다. 고맙습니다! isupper() 및 다른 함수의 코드를 실제로 읽을 수있는 곳은 어디입니까? – user1145538
거의. 문자가 소문자이면 인쇄 할 때 대문자로 변환해야합니다. –
@Sani Huttunen : 아, 그걸 건너 뛰었습니다. 내가 고칠 수있게 해줘. – orlp