2016-08-02 3 views
0
#include "stdio.h" 
int main() 
{ 
    int toes = 10; 
    printf("toes=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
    return 0; 
} 

// 이것은 C 프라이머 플러스의 연습 문제입니다. 컴파일 및 실행 후 두 번째 \ t 만 작동합니다.첫 번째 이유가 작동하지 않는 이유는 무엇입니까?

+1

당신이 _ \ t이 WORK_하지 않는 무엇을 의미합니까 :

은 당신의 printf에 변경 작동하는지 확인하려면? – pzaenger

+2

작동하지만 시각적 표현에서 둘 이상의 공간을 차지하지 않습니까? 여섯 번째 덤프를 실행하거나 공백 문자의 특수 시각화가있는 편집기로 복사하여 붙여 넣으십시오. – moooeeeep

+0

탭에 x 공백이 삽입되지 않습니다. 출력을 콘솔 창의 열에 맞 춥니 다. –

답변

6

나를 위해 잘 작동합니다. (example)

출력 :

toes=10 2toes=20  toes2=100 

참고 \t 수단 "표로"또는 N 보통 8 N 위치에 가장 가까운 배수 패드 환언있다.

toes=10은 7자를 차지하므로 다음 8의 배수에 도달하려면 1 칸 인쇄해야합니다.

+0

'2toes = 20'으로 설정하는 더 좋은 방법의 예가 8자를 차지하므로 다음 8의 배수로 맞추려면 8 개의 공백을 인쇄해야합니다 (탭 크기가 8이라고 가정). – rustyx

+0

외부 링크를 사용하는 대답은 쓸모가 없습니다. 그리고 질문에 문제가 없다면 근본적인 이유가 있습니다. – Olaf

+0

실례합니다. 그런 다음 SO에서 직접 C 프로그램을 컴파일하고 실행하는 방법을 보여줍니다. – rustyx

2

탭은 고정 된 위치에 텍스트를 들여 씁니다. 즉, 4 칸 간격을 만들지 않고 다음 플래그 위치와 일치 할 때까지 간격을 둡니다.

toes=10 2toes=20  toes2=100 
1234567812345678123456781234567812345678 

이는 불행한 예입니다. 탭의 길이는 8입니다. 그래서 그들은 8 글자 씩 멈 춥니 다. 처음에 하나의 공간을 추가 한 경우 \t 탭이 더 큰 차이를 만듭니다.

printf("%s%s%s\n", " single", " double", " square"); 
printf("%7d%7d%7d\n", toes, 2*toes, toes*toes); 

출력 :

single double square                                                         
    10  20 100 
0

\t 문자가 항상 동일한 공간을 차지하지 않습니다, 그것은 열을 조절합니다

더 나은 출력 서식에 의해 달성 될 것이다.

항목 사이에 공백을 수정하려면 값 사이에 수동으로 공백을 입력하십시오.

1

작동하지만, 그렇지 않은 것 같습니다!

기본적으로 tabspace8spaces과 같기 때문입니다. 이 채워지려면 이 7 공백을 차지하고 남은 경우 1 공백 만 차지합니다.

printf("ts=%d\t2toes=%d\ttoes2=%d\n",toes,toes+toes,toes*toes); 
관련 문제