c언어를 배우고 있는 초보입니다.

std33의 이미지

이름을 입력하면 번호를 출력해주는 프로그램을 만드려고 합니다.
그러나 뭐가 잘 못 된건지 잘모르겠습니다.
원래대로라면 김밥을 입력하면 "24번입니다" 를 출력해야 하는데 아무것도 출력하지를 않습니다.
아마 scanf에서 글자를 못 입력받는 것 같은데 이를 입력받게 수정할 방법이 있을까요?
도움 주시면 감사하겠습니다.

#include

int main(void)
{
char o;
printf("번호를 알고 싶은 학생의 이름을 입력하세요.");
scanf("%c", o);
if(o == '김밥')
{
printf(" 24번입니다.");
}
else if(o == '라면')
{
printf("번호는 23번입니다.");
}
return 0;
}

김정균의 이미지

변수 o 는 1byte 짜리 character 입니다. 여기에 문자열이 들어갔다고 생각하시고 코드를 작성하니 당연히 안되겠죠.

문자열을 처리 하시려면 char * 와 같이 character pointer 로 자료형을 만드시고, 비교를 할 때도 single quote 가 아닌 double qoute 로 하셔야 string 비교를 할 수 있습니다. scanf 에서도 character(%c) 가 아니라 string (%s) 를 받으셔야 하고요.

그리고 코드 입력시에는 <code> ~ </code> 블럭을 사용하세요. 그래야 가독성이 좋아집니다.

질문자의 이미지

제가 아직 문자열을 배우지 않아서요. 나중에 문자열을 공부한 다음에 다시한번 만들어 봐야겠네요. 말씀하신 부분은 int가 감당할 수 있는 범위보다 클때 unsigned int나 long long int를 사용하는 것과 비슷해보이네요. 좋은 정보 감사드립니다.

swish95의 이미지

내용을 잘못 이해하고 계시네요

char o;
scanf("%c", o);
if(o == '김밥')

char 인 o 와 비교하는데 '김밥' 이라고 쓰셨고 이건 문자열도 아니고 그냥 char 입니다.
문자열이라면 "김밥" 이라고 해야 됩니다.
따라서 위의 비교는 성립할수 없습니다.

unsigned int나 long long int 와는 아무 관계가 없습니다.

char o;
scanf("%c", o);
if(o == 'a')

이렇게 해서 a 라고 쳐보세요

------------------------------------------------------------
ProgrammingHolic

std33의 이미지

김밥이 문자열이라서 오류가 났었던 거였군요. 자세히 알려주셔서 감사합니다.

라스코니의 이미지

올리신 코드를 보니 책이나 인터넷 강좌 같은 것을 따라서 하고 있지 않은 것 같은데 익숙해 지기 위해서는 여러 책과 인터넷 강좌를 찾아 보시기 바랍니다.

일단 질문하신 문제는 링크(https://blog.naver.com/PostView.nhn?blogId=zlatmgpdjtiq&logNo=221384297802)를 참고해 보세요.

qfrub2의 이미지

문자 변수 o를 선언하시고 "김밥"이라는 문자열과 비교하려니 실행이 되지 않으실겁니다.
문자열을 입력하시려면 문자가 아닌 문자열을 선언한 뒤 strcmp()함수로 선언한 문자열이 "김밥"과 같은지 비교하시고 리턴값이 0이면 "24번입니다."를 출력하도록 수정하시면 됩니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.