#include<stdio.h>
#include<ctype.h>
int main(void)
{
int c;
while((c=getchar())!=EOF)
{
if(islower(c))
c=toupper(c);
putchar(c);
}
system(\"pause\");
}
근데 여러문자 입력해도 다 대문자로 바꾸네요; 띄어쓰기도 되고..
이거 왜이러죠..
그리고 while 조건 구문도 좀 이해가 안 가는데.. 알려주세요.. ㅠㅠ
EOF 란 파일의 끝이라는 말인데, ctrl+c 야 말그대로 강제 종료까지 문자를 계속 입력받겠다는 말이지
문자 계속치면서 ctrl+c눌러봐 그러면 프로그램 종료뜰거야
한문자만 받는게 아니라 stdin에서 한문자를 끌어오는거다. stdin에서 가져올 문자가 없으면 기다리는거고
while문에 조건식은 니가 문자를 하나 입력받아서 그게 ctrl+c가 나올때까지 돈다는 말임
글고 EOF를 입력하고 싶으면 윈도에선 Ctrl+Z일거고 리눅스에선 Ctrl+D 누르면 된다. Ctrl+C는 EOF를 보내는게 아니라 그냥 프로그램을 종료시켜버리는겨
아맞다 ctrl+z 임 죄송 ㅠㅋ
stdin이 뭐죠? 그리고 while((c=getchar())!=EOF) 이게 문자 하나만 받아서 c 에 저장하고, 계속 반복한다는 뜻 아닌가요?
근데 putchar(); getchar(); 이게 설명에 하나의 문자를 입력받고 출력한다. 이렇게 되어있는데, 문자 여러개 입력해도 다 받아지고, 출력 다되는게 이상해서..
stdin은 standard input으로 표준입력 이라고 보통 번역되서 책에 실려있을거야. 키보드 입력을 하면 그 입력들이 표준입력 버퍼에 쌓이게 되는데, 그 버퍼에서 한 글자를 땡겨오는겨. 문자 여러개 입력해도 다 받아지는게 아니라 결국 한문자씩 여러번을 받게 되는거지
islower 함수랑 toupper함수는 알고 쓴거임?ㅇㅇ;;
위에 형님이 잘 설명해주셨네. 버퍼라는 개념을 아직 안배운거같은데, 너님이 입력하면 하나하나 버퍼에 들어가고 (스페이스도) 버퍼에서 하나씩 빼오는 거라고 생각해
그러니까 너님 프로그램은 문자를 입력받고 그 입력받은 문자가 순서대로 while 문에 타고들어가서 islower 함수에서 소문자인지를 판단하고
toupper 가 대문자변환맞나? 맞을거야
아.. 조금 알 것 같네요..
if(islower(c)) 근데 여기서 islower(c)는 반환되는 값이 있는데 어떻게 이런식으로 쓰일 수 있는건지;;
if(islower(c)) 는 다른걸로 쓰면 if(islower(c) != 0) 과 같습니다.
넌 뭐 어디 명문대 나왔나보다?? 괜히 공부 열심히 해볼라는 엄한 사람한테 시비걸지 마라 아무리 디씨라도 이러는건 아니지
ㅋㅋㅋㅋㅋㅋ 이런;
어이씨 그새 리플 지우고 튀었네 남아있는 리플만 보면 꼭 내가 시비거는것 같잖아