C printf строковый спецификатор \ t1? - PullRequest
0 голосов
/ 24 декабря 2011

Я читаю кусок кода сортировки кучи C и сталкиваюсь с этим:

 do{
    printf("\n\t\t1:INSERT\n");
    printf("\n\t\t2:SEARCH\n");
    printf("\n\t\t3:DELETE\n");
    printf("\n\t\t1:DISPLAY\n");
    printf("Enter your choise\n");
    scanf("%d",&choise);
    switch(choise)
    {
        case 1: printf("Enter value to insert\n");
                scanf("%d",&val);
                last=insert(root,val);
                break;
        case 2:printf("Enter value for search \n");
                scanf("%d",&val);
                search(root,val);
                break;
        case 3:delete(root);
                delete(last);
                break;
        case 4:printf("\n\tHEAP\n");
                display(root);
                break;
        default : printf("INVALID choise ... can't you see properly?\n");

    }

Кто-нибудь знает, что такое \t1 и \t2 в printf с и как они работают?Я попробовал Google, но не получил никакой полезной информации.Спасибо.

Ответы [ 5 ]

6 голосов
/ 24 декабря 2011

\t обозначает символ табуляции. 1 и 2 не имеют к этому никакого отношения; они буквально 1 и 2.

1 голос
/ 25 декабря 2011

Вы не найдете упоминания о \t в документации printf, потому что она не имеет ничего общего с printf.Это часть синтаксиса строкового литерала, похожая на предшествующий ему \n.\n обозначает символ новой строки;\t обозначает символ табуляции.printf никогда даже не видит символы '\', которые заменяются во время компиляции;он просто видит символы новой строки и табуляции, которые он обрабатывает, как и любые другие обычные символы, которые не являются частью последовательности %....(Может быть некоторая специальная обработка этих конкретных символов, но это делается процедурами более низкого уровня, которые вызываются printf.)

И \t1 обозначает символ табуляции, за которым следует цифра 1.

(Кроме того: Unix-подобные системы имеют команду printf , используемую из приглашения оболочки, которая работает аналогично функции C printf. Он обрабатывает \ последовательности самостоятельно.)

0 голосов
/ 25 декабря 2011

\t является вкладкой. Он печатает символ табуляции, а затем вы печатаете 1. Это как делать /n1. Это означает оставить строку и затем вывести 1.

\t  -----> I am a tab character that prints spaces.

1   -----> I am a number.

Мы оба , а не один символ.

\t1 -----> Print tab character and then print 1. 

\t2 -----> Print tab character and then print 2. 

Получите это сейчас?

0 голосов
/ 24 декабря 2011

\t просто используется для печати горизонтальной вкладки. Числа будут напечатаны, как они есть, и не являются частью \t. То есть:

printf("\n\t\t1:INSERT\n");
printf("\n\t\t2:SEARCH\n");
printf("\n\t\t3:DELETE\n");
printf("\n\t\t1:DISPLAY\n");
printf("Enter your choise\n");

напечатает что-то вроде:

    1:INSERT

    2:SEARCH

    3:DELETE

    1:DISPLAY
Enter your choise
0 голосов
/ 24 декабря 2011

Спецификаторы просто \t, что является символом табуляцииЧисла являются частью напечатанных литералов.

...