簡體   English   中英

如何在printf()中對齊數字?

[英]How do I align my numbers in a printf()?

我需要正確地排列數字。 我在處理一位數和三位數的浮點數時遇到問題。 這是我的輸出:

ID        G1        G2        G3        Average

000000065 92.000000 93.000000 86.000000 90.333336

000000101 85.500000 75.500000 90.000000 83.666664

000002202 100.000000 92.000000 87.250000 93.083336

000022227 96.000000 84.000000 75.500000 85.166664

000031303 99.000000 87.000000 62.000000 82.666664

101010010 0.000000 81.000000 91.000000 57.333332

424242428 77.000000 77.000000 87.500000 80.500000

700666124 88.000000 65.000000 89.000000 80.666664

812345676 95.000000 76.000000 87.000000 86.000000

999999999 99.000000 99.500000 100.000000 99.500000

這是我的打印功能:

//function that prints out contents of tree
int print_tree (NodePtr treePtr){

// if statement begins
   if (treePtr != NULL){
      print_tree(treePtr->left);
      printf( "%.9d %f %f %f %f\n\n", treePtr->studentID, treePtr->g1, treePtr->g2, treePtr->g3, treePtr->average);
      print_tree(treePtr->right);

   }//if statement ends

   return 0;//indicates successful termination

}//end print_tree

如您所見,由於一位數和三位數長的浮點數(我需要打印浮點數),某些數字未正確排列。

這是有關使用格式說明符進行間距的很好的教程

一個簡單的示例:使用格式說明符,例如:

    printf("%5.3f", 13.3423452);  

在您的情況下使用:

“%09d”代表整數09將保證使用9個空格,並用0填充
例如:對於123,將打印000000123。

浮點數為“%9.7f” ,“ 9保證”字段至少應為9寬,“ 7”將在“之后”給出7位數字。

當然,在每行的最后一列上添加\\ n。

代碼示例:說我有以下輸入,格式如下所示:

printf("%20.7f\n", 1213.342345287867587);
printf("%20.7f\n", 13.342);
printf("%20.7f\n", 1213.342345287867587);
printf("%20.7f\n", 1213.342345287867587);
printf("%020d", 3);

輸出如下所示:

在此處輸入圖片說明

注意: ,每列為20寬。 (因為格式規格中前20位。)
浮點數用指定的對齊數字空格填充。
整數以0填充以對齊。 (由於020格式規范。)

您應該指定字段寬度以及小數位數:例如,每次9列:

printf( "%.9d %9.9f %9.9f %9.9f %9.9f\n\n", treePtr->studentID, treePtr->g1, treePtr->g2, treePtr->g3, treePtr->average);

另一種快速的解決方案是使用制表符為您完成此操作(盡管如果位數差異大於8,則無法正確對齊):

printf("%d\t%f\t%f\t%f\t%f\t%f\n\n", 
       treePtr->studentID, treePtr->g1, treePtr->g2, 
       treePtr->g3, treePtr->average);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM