2011-12-24 114 views
0

我讀了一塊ç堆排序代碼和遇到這樣的:C printf字符串說明符 t1?

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"); 

    } 

任何人都知道什麼在printf小號\t1\t2以及它們是如何工作的?我試過谷歌,但沒有得到任何有用的信息。 謝謝。

回答

6

\t表示製表符。 12與它無關;它們只是文字12

0

說明符只是\t,這是製表符。這些數字是印刷文字的一部分。

0

\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 
1

你不會找到的\t任何提及任何printf文檔中,因爲它無關printf。它是字符串文字語法的一部分,類似於之前的\n\n表示換行符; \t表示製表符。 printf甚至沒有看到'\'字符,它們在編譯時被替換;它只是看到新行和製表符,它像任何其他不屬於任何%...序列的普通字符一樣對待。 (有可能是這些特殊字符的一些特殊處理,但那是通過由printf稱爲較低級別的程序完成。)

而且\t1表示製表符後面跟着一個數字1

(一種一旁:類Unix系統具有​​,從shell提示,其功能類似於在C printf函數中使用它確實處理\序列本身。)

0

\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. 

立即獲取?