게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 질문드려도 될까요?
게시물ID : programmer_13181짧은주소 복사하기
작성자 : 악달
추천 : 1
조회수 : 909회
댓글수 : 20개
등록시간 : 2015/09/09 22:49:16
옵션
  • 창작글
  • 본인삭제금지
#include <stdio.h>
int main()
{
char ch;
printf("문자를 입력하시오 : ");
scanf("%c",&ch);
if(ch>='a' && ch<='z') printf("소문자 입니다.\n\n");
else if(ch>='A' && ch<='Z') printf("대문자 입니다.\n\n");
else if(ch>='0' && ch<='9') printf("숫자 입니다.\n\n");
else if(ch!=10) printf("기타 문자입니다.\n\n");
}


이게 기본이 되는 형태인데
여기서 while이나 for문을 써서 무한루프를 하게 한 후 특정값을 입력하면 탈출하게 하는게 목표인데요,

#include <stdio.h>
int main()
{
char ch;
while(1)
{
printf("문자를 입력하시오 : ");
scanf("%c",&ch);
if(ch=='0') break;
else if(ch>='a' && ch<='z') printf("소문자 입니다.\n\n");
else if(ch>='A' && ch<='Z') printf("대문자 입니다.\n\n");
else if(ch>'0' && ch<='9') printf("숫자 입니다.\n\n");
else printf("기타 문자입니다.\n\n");
}
}

이걸 이렇게 해버리면 엔터까지 인식하는거 같더라구요
그래서 나름대로 머리를 굴려서

#include <stdio.h>
int main()
{
char ch;
while(1)
{
printf("문자를 입력하시오 : ");
b:
scanf("%s",&ch);      //  여기서 %c를 %s로 바꿈
if(ch=='0') break;
else if(ch>='a' && ch<='z') printf("소문자 입니다.\n\n");
else if(ch>='A' && ch<='Z') printf("대문자 입니다.\n\n");
else if(ch>'0' && ch<='9') printf("숫자 입니다.\n\n");
else if(ch!=10) printf("기타 문자입니다.\n\n");
else if(ch==10) goto b;
}
}

이렇게까지 했는데,
두번째에서 3,엔터를 입력하면 3이 먼저 if문을 통과하고 다시 위로 올라와서 엔터가 if로 검색되더라구요
이게 %s로 3sdde1 이런식으로 입력하면 제일 앞에있는 문자로 if문이 도는거 같은데
어 머지 해결된거같다

#include <stdio.h>
int main()
{
char ch;
while(1)
{
printf("문자를 입력하시오 : ");
scanf("%s",&ch);
if(ch=='0') break;
else if(ch>='a' && ch<='z') printf("소문자 입니다.\n\n");
else if(ch>='A' && ch<='Z') printf("대문자 입니다.\n\n");
else if(ch>'0' && ch<='9') printf("숫자 입니다.\n\n");
else printf("기타 문자입니다.\n\n");
}
}

그냥 이렇게하니 되네요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ %s로하면 앞에것만 도니 엔터를 인식 안하네요
질문하다 문제푼적은 첨인듯 감사합니다


그래서 질문!
0이 아니라 999로 반복문을 빠져나가게 하려면 어떻게 해야하나요? 그냥 999로하니 숫자입니다만 떠버려서..

그리고 두번째 코드에서 왜 3엔터를 하면 3이 먼저 if를 빠져나가고 그뒤에 처음부터 다시 엔터로 도나요?
33엔터 하면 3, 3, 엔터 이렇게 세개가 각각 결과를 출력하더라구요

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호