簡體   English   中英

如何在C中使用printf()格式在double前面保留空間

[英]How to reserve spaces in front of a double using printf() formatting in C

考慮使用C編程語言的代碼:

double d = 3.4;
printf("%02.2f", d);

要么

double d = 3.4;
printf("%2.2f", d);

運行這些代碼塊時得到的輸出是:

3.40

我正在嘗試格式化表格,並且需要在double或float前面保留空間,以便我的表格不會歪斜。

什么是獲得輸出的最佳方法

03.40

如預期?

double d = 3.4;
printf("%05.2f", d);

width字段用於整個轉換后的字符串(而不僅僅是整數部分)。

03.40似乎不是一個好的解決方案。 您應該添加前導或尾隨空格,而不是零。

最好的選擇是使用snprintf

const size_t buffer_size = 16;

double value = 3.40;
char buffer[buffer_size];
int result = snprintf(buffer, buffer_size, "%.2f", value);

if(result > 0 && result < buffer_size)
    printf("Length of string: %d (%s)\n", result, buffer);

輸出:

Length of string: 4 (3.40)

在此處嘗試以下代碼: link

哦,還有一件事: snprintf是C ++ 11的功能。 如果您沒有訪問兼容C ++ 11的編譯器的權限,請使用較不安全的版本sprintf在Visual C ++的情況下使用特定平台的解決方案(例如sprintf_s)

暫無
暫無

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

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