C puts() 와 putchar()

puts()는 string 문자열을 stdout을 통해 출력합니다. (null Character는 제외하고 새문자열을 포함해서 출력합니다).
putchar()는 한문자를 stdout을 통해 출력합니다.

간단하게..
puts()는 문장을 출력하고 다음칸으로 띄우고
putchar()는 문자 하나를 출력합니다.

다음은 RMIT에서 시험문제로 출제되었던 내용입니다.
message Array를 puts와 putchar로 출력하였을때 결과는 어떻게 나올까요?

#include 
#include 
int main(void)
{
   char *message[] = 
   {
      "With", "Confidence", "you", "have", "won",
      "before", "you", "have", "started"
   };
   char *word = message[2];
   puts(word);
   puts(*message+3);
   putchar(*(*(message+8)+4));
   putchar(*(*(message+1)+3)+3);
   puts("confidence"+4);
   return EXIT_SUCCESS;
}

하나씩 따라가보면,
1. message[2] (Array의 3번째항목 “you”)를 word 포인터로 지정합니다.

2. puts(word)로 you가 출력됩니다.

3. puts(*message+3)
*message = “With”
*message+3 = h (With의 4번째 문자를 가리킴)

4. putchar(*(*(message+8)+4))
(message+8) = “started”
*(message+8)+4 = ted (started 의 5번째 문자)

5. putchar(*(*(message+1)+3)+3)
(message+1) = “Confidence”
*(message+1)+3 = f (Confidence 의 4번째문자)
*(*(message+1)+3)+3 = f를 가리키는 포인터에서 3증가 f->g->h->i

6. puts(“confidence”+4)
“confidence”에서 4번째 문자열부터 출력

출력화면
out1.PNG

puts()에 의해 you, h는 한줄씩 출력되고
putchar()는 t + i + idence 와 같이 붙어서 출력되었습니다.

C puts() 와 putchar()”의 2개의 생각

  1. 울 학교 시험문제 나와서 너무 반갑네요!
    4번에 *(message+8)+4 = ted (started 의 5번째 문자) 는 *(message+8)+4 = t 이죠??
    잘 보고 갑니다!

    Liked by 1명

  2. 네 맞습니다.
    (message+8)는 started를, *(message+8)+4 에서 포인터가 started의 5번째 부터 가리켜서 ted 이나 putchar는 문자 하나만 출력하므로 “t” 입니다. 저도 시험문제였는데 도움이 되었다니 좋네요^^

    좋아요

댓글 남기기