인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

patjuk님의 프로필 이미지
patjuk

작성한 질문수

홍정모의 따라하며 배우는 C언어

9.1 질문

작성

·

270

0

printf의 반환값만 사용하려고 했으나 코드를 실행시켜보면 

********************

stdngowl           stdngowl

Jeonju, Korea      Jeonju, Korea

******************** 

count =  printf("%s", things); 자리에서 반환과 동시에 출력됩니다. 

이전 예제에서 반환값을 사용하는 문제를 해결할 때는 정상적으로 작동하였는데 

현재 코드에서 무엇이 잘 못된것인지 찾지못했습니다..

원인이 보인다면 말씀 부탁드립니다. .

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#define WIDTH 20

#define NAME "stdngowl"

#define ADDRESS "Jeonju, Korea"

void stars(int width);

void sort(int width, char things[100]);

int main()

{

stars(WIDTH);

sort(WIDTH, NAME);

sort(WIDTH, ADDRESS);

stars(WIDTH);

return 0;

}

void stars(int width)

{

while(width)

{

putchar('*');

width--;

}

putchar('\n');

}

void sort(int width, char things[30])

{

int count;

count =  printf("%s", things);

while( ((width - count)/2) > 0 )

{

putchar(' ');

count++;

}

printf("%s\n",things);

}

답변 2

1

patjuk님의 프로필 이미지
patjuk
질문자

9.1 함수파트를 진행하다가 생긴 문제였고 .

4.7 강의로 돌아가 진행했던 예제를 살펴보니 잘못기억하고 있다는 사실을 알게됐습니다. 

검색을 해서 출력하지 않아도 반환되지 않은 경우를 찾았다고 생각해서 질문했는데 제가 잘못받아들인 것 같습니다. 

알려주셔서 감사합니다. 

1

안녕하세요?
강의의 어느 부분에 등장하는 내용인가요?
이전 예제가 무엇인지 모르겠는데, 직접 만드신 이전 예제를 한 번 참고해보세요.

출력이 되는 이유는 작성하신 코드상에서 printf의 return 값을 받아내려면 함수가 온전히 한 번 실행되어야하기 때문입니다.

patjuk님의 프로필 이미지
patjuk

작성한 질문수

질문하기