작성
·
272
1
#include <stdio.h>
#include <ctype.h>
int main()
{
char ch;
while((ch = getchar()) != '\n')
{
if (islower(ch) == 1) {
ch = toupper(ch);
}
else if (isupper(ch) == 1) {
ch = tolower(ch);
}
putchar(ch);
}
putchar(ch);
return 0;
}
이런식으로 하면 왜 소문자는 대문자로 안바꿔주는지 궁금하네요
답변 2
2
https://www.tutorialspoint.com/c_standard_library/c_function_islower.htm
위 링크에서 return value를 참고하시면 islower(ch)의 return 값이 non-zero value(true)이고 이 말 대로라면 이는 1이 아닐 수 있습니다
따라서 islower(ch) == 1 는 false(0) 를 return하게 되어 if 안으로 들어가지 못하는듯 합니다.
실제로 '== 1' 을 지우시면 정상 실행됩니다!
저도 차근차근 강의듣고있는 학생이긴 한데 우연히 들어왔다가 저도 궁금해서 답글 달아봅니다....
0
islower() 함수의 리턴값이 true면 2가 반환되서 그렇네요.
isupper() 함수는 true일때 1이 반환되는데
왜 하필 2인지는 모르겠다만 코드를
islower(ch) == 2
이렇게 수정하시면 정상적으로 작동할거에요