작성
·
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
9.1 함수파트를 진행하다가 생긴 문제였고 .
4.7 강의로 돌아가 진행했던 예제를 살펴보니 잘못기억하고 있다는 사실을 알게됐습니다.
검색을 해서 출력하지 않아도 반환되지 않은 경우를 찾았다고 생각해서 질문했는데 제가 잘못받아들인 것 같습니다.
알려주셔서 감사합니다.
1
안녕하세요?
강의의 어느 부분에 등장하는 내용인가요?
이전 예제가 무엇인지 모르겠는데, 직접 만드신 이전 예제를 한 번 참고해보세요.
출력이 되는 이유는 작성하신 코드상에서 printf의 return 값을 받아내려면 함수가 온전히 한 번 실행되어야하기 때문입니다.