inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

14.25 qsort 함수 포인터 연습문제

\t 간격 차이

1152

CJS

작성한 질문수 22

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를 통해서 간격을 조정해주는데 교수님의 경우 숫자가 같은 위치에서 시작하는데

c언어.png

저는 왜 40 혼자 멀리 떨어져있을까요?

 


 

또 \t를 검색해보면 Tab키와 같이 일정한 간격을 띄움라고 나와있는데 일정한 간격을 어디를 기준으로 띄우는 건가요?

"Jack Jack"의 경우 공백 포함 9글자고

"Geenie의 경우 6글자인데

강의에서 "40", "300"은 같은 위치에서 시작함에 의문이 생깁니다.

c

답변 1

1

Soobak

안녕하세요, 답변 도우미 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);

 

Export template 안됨

1

19

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

54

3

main 함수에서 왜 int만 선언이 되는걸까요

1

56

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

54

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

61

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

80

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

113

2

소스파일안에 여러 파일

1

76

2

F5와 F7의 차이

1

76

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

69

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

65

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2