c언어를 배우고 있는 초보입니다.
글쓴이: std33 / 작성시간: 토, 2021/12/04 - 4:01오후
이름을 입력하면 번호를 출력해주는 프로그램을 만드려고 합니다.
그러나 뭐가 잘 못 된건지 잘모르겠습니다.
원래대로라면 김밥을 입력하면 "24번입니다" 를 출력해야 하는데 아무것도 출력하지를 않습니다.
아마 scanf에서 글자를 못 입력받는 것 같은데 이를 입력받게 수정할 방법이 있을까요?
도움 주시면 감사하겠습니다.
#include
int main(void)
{
char o;
printf("번호를 알고 싶은 학생의 이름을 입력하세요.");
scanf("%c", o);
if(o == '김밥')
{
printf(" 24번입니다.");
}
else if(o == '라면')
{
printf("번호는 23번입니다.");
}
return 0;
}
Forums:
변수 o 는 1byte 짜리 character 입니다
변수 o 는 1byte 짜리 character 입니다. 여기에 문자열이 들어갔다고 생각하시고 코드를 작성하니 당연히 안되겠죠.
문자열을 처리 하시려면 char * 와 같이 character pointer 로 자료형을 만드시고, 비교를 할 때도 single quote 가 아닌 double qoute 로 하셔야 string 비교를 할 수 있습니다. scanf 에서도 character(%c) 가 아니라 string (%s) 를 받으셔야 하고요.
그리고 코드 입력시에는 <code> ~ </code> 블럭을 사용하세요. 그래야 가독성이 좋아집니다.
답변 감사드립니다.
제가 아직 문자열을 배우지 않아서요. 나중에 문자열을 공부한 다음에 다시한번 만들어 봐야겠네요. 말씀하신 부분은 int가 감당할 수 있는 범위보다 클때 unsigned int나 long long int를 사용하는 것과 비슷해보이네요. 좋은 정보 감사드립니다.
내용을 잘못 이해하고 계시네요
내용을 잘못 이해하고 계시네요
char 인 o 와 비교하는데 '김밥' 이라고 쓰셨고 이건 문자열도 아니고 그냥 char 입니다.
문자열이라면 "김밥" 이라고 해야 됩니다.
따라서 위의 비교는 성립할수 없습니다.
unsigned int나 long long int 와는 아무 관계가 없습니다.
이렇게 해서 a 라고 쳐보세요
------------------------------------------------------------
ProgrammingHolic
답변 감사드립니다.
김밥이 문자열이라서 오류가 났었던 거였군요. 자세히 알려주셔서 감사합니다.
올리신 코드를 보니 책이나 인터넷 강좌 같은 것을
올리신 코드를 보니 책이나 인터넷 강좌 같은 것을 따라서 하고 있지 않은 것 같은데 익숙해 지기 위해서는 여러 책과 인터넷 강좌를 찾아 보시기 바랍니다.
일단 질문하신 문제는 링크(https://blog.naver.com/PostView.nhn?blogId=zlatmgpdjtiq&logNo=221384297802)를 참고해 보세요.
문자 변수 o를 선언하시고 "김밥"이라는 문자열과
문자 변수 o를 선언하시고 "김밥"이라는 문자열과 비교하려니 실행이 되지 않으실겁니다.
문자열을 입력하시려면 문자가 아닌 문자열을 선언한 뒤 strcmp()함수로 선언한 문자열이 "김밥"과 같은지 비교하시고 리턴값이 0이면 "24번입니다."를 출력하도록 수정하시면 됩니다.
댓글 달기