Inflearn Community Q&A
\t 간격 차이
Written on
·
1.1K
1
#include <stdio.h>
#include <stdlib.h>
struct kid
{
char name[100];
int height;
};
int compare(const void* first, const void* second)
{
if (((struct kid*)first)->height > ((struct kid*)second)->height)
return 1;
else if (((struct kid*)first)->height < ((struct kid*)second)->height)
return -1;
else
return 0;
}
int main()
{
struct kid my_friends[] = {
"Jack Jack", 40, "Geenie", 300, "Aladdin", 170, "Piona", 150
};
const int n = sizeof(my_friends) / sizeof(struct kid);
qsort(my_friends, n, sizeof(struct kid), compare);
for (int i = 0; i < n; i++)
printf("%s \t%d\n", my_friends[i].name, my_friends[i].height);
return 0;
}위는 저의 코드입니다.
강의 5분 45초를 보면 printf()함수에 \t를 통해서 간격을 조정해주는데 교수님의 경우 숫자가 같은 위치에서 시작하는데
저는 왜 40 혼자 멀리 떨어져있을까요?
또 \t를 검색해보면 Tab키와 같이 일정한 간격을 띄움라고 나와있는데 일정한 간격을 어디를 기준으로 띄우는 건가요?
"Jack Jack"의 경우 공백 포함 9글자고
"Geenie의 경우 6글자인데
강의에서 "40", "300"은 같은 위치에서 시작함에 의문이 생깁니다.
c
Answer 1
1
안녕하세요, 답변 도우미 Soobak 입니다.
\t (탭 문자) 는 일반적으로 8 개의 공백 문자로 표현됩니다. 다만, 이는 환경에 따라서 달라질 수 있습니다. (예 : 터미널, IDE 설정 등)
일정한 간격을 띄우는 기준은 '탭 정지 위치' 에 따라서 결정됩니다.
'탭 정지 위치' 역시 환경에 따라서 달라질 수 있습니다.
(관련 키워드 'tab stop' 으로 검색을 해보셔도 도움이 되실 것 같습니다.)
코드에서, "Jack Jack" 은 9 글자이로 8 글자를 초과하고, 나머지 글자들을 모두 8 글자 이하이기 때문에, 질문자님 터미널 환경의 '탭 정지 위치' 에 있어서 8 글자만큼의 차이가 생기는 것으로 보입니다.
\t (탭 문자) 를 통해 문자열의 출력을 고정하는 방법 외에도, printf() 함수의 형식 지정자를 사용하여 다음과 같이 정렬할 수도 있으니, 상황에 따라서 적절한 방법을 선택하시면 좋을 것 같습니다.
pritnf("%-16s\t%d\n", my_friend[i].name, my_friend[i].height);





