2011-12-24 82 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. 

立即获取?