2017-01-20 1 views
1

저는 코딩을 시작하고 숙제를 완료하려고하는 초보자입니다.가변 길이 탭 ( t)

비록 내 질문을 해결했지만, 그렇게하는 동안 나는 예기치 않은 행동을 보지 못했습니다.

enter image description here

것은 내가 처음 모두에 하나의 탭을 사용했기 때문에 다음은

#include<stdio.h> 

int calculate_intpart_qutent(int dividend, int diviser); 
int main() 
{ 

    int a; 
    int b; 
    int choice; 


    do 
    { 
     printf("Enter the Dividend (a) :\t"); 
     scanf("%d", &a); 

     printf("\nEnter the Divisor (b) :\t"); 
     scanf("%d", &b); 

     printf("\n\nThe quotient is:\t%d", calculate_qutent(a, b)); 

     printf("\n\nDo you want to try again?(Y\\N):\t"); 
     choice = getchar(); 

     if (choice == '\n') choice = getchar(); 
     printf("\n\n\n"); 

    } while (choice=='y'|| choice=='Y'); 


} 

int calculate_intpart_qutent(int dividend, int diviser) 
{ 
    return (dividend/diviser); 

} 

내 출력 : 나는 하나의 \ t.Here 다른 탭 길이를 얻고 곳은 내 코드입니다 printf 문, 출력 화면에서 다른 탭 길이가 왜 나는지? 내가 여기서 뭔가 잘못하고있는거야?

나는이 질문을 downvote 및 묻기 전에 C에서 초급 학생임을 고려하십시오. 어떤 도움을 많이 주시면 감사하겠습니다.

Visual Studio 2017 RC를 사용하고 있습니다.

답변

4

첫 번째 printf 문 모두에서 단일 탭을 사용했기 때문에 출력 화면에 다른 탭 길이가 표시되는 이유는 무엇입니까?

탭 사용 won't guarantee 인쇄 된 공간 수.

printf에 고정 길이를 사용하려면 %-30s과 같은 문자를 입력하십시오. - 왼쪽 정렬 방식으로 인쇄되는 문자열의 경우 30 공백을 보장합니다.

printf("%-30s", "Enter the Dividend (a) :"); 
    scanf("%d", &a); 

    printf("\n%-30s", "Enter the Divisor (b) :"); 
    scanf("%d", &b); 
+0

감사합니다. 나에게 많은 것을 의미한다. 이 질문을 중복으로 표시하십시오. –

+1

인용 된 질문의 속임수 – artm

3

'\ t'문자는 '\ t'다음 문자까지 정렬합니다. 귀하의 경우 8 번째 문자마다 탭이 멈 춥니 다. '\의 t'이전 문자

printf("Enter the Dividend (a) :\t"); 

번호 8 * 4 = 32의 위치에 일치한다 24. 그래서 다음 '\의 t'와 동일하다.

printf("\nEnter the Divisor (b) :\t"); 

'\ t'= 23 이전의 문자 수이므로 다음 '\ t'는 8 * 3 = 24 번째 위치에 정렬됩니다.

이것은 문제가되지 않으며 잘못하지 않았습니다. 터미널에서 탭이 작동하는 방식을 이해해야합니다 (사용자가 탭 너비를 변경할 수 있음). '\ t'를 제거 할 수 있으며 @artm answer에서 언급 한 printf 구문에서 고정 길이를 사용할 수 있습니다.

+0

기술적으로 "C 언어"가 아니라 "사용 된 단말기에서 탭이 어떻게 작동하는지". – Vatine

+1

@Vatine이 답변으로 업데이트되었습니다. – Rocoder