簡體   English   中英

如何在C中填充數字時使用宏?

[英]How can I use a macro in padding a number in C?

我試圖在sprintf語句中使用宏。 它是這樣的:

#define MACR 6

....
int Number= 5;
char Formatted[30];
sprintf( Formatted, "%06d", Number );

在這里,我想使用MACR而不是6.任何人都可以幫助我嗎?

使用* format說明符將width作為參數傳遞。 這樣的事情應該有效:

sprintf( Formatted, "%0*d", MACR, Number );

但請使用常量而不是MACRO。

最簡單的解決方案是使用'*'指定長度,並將宏作為參數傳遞:

sprintf( formatted, "%0*d", MACR, number );

或者,您可以連接字符串,例如:

sprintf( formatted, "%0" STRINGIZE(MACR) "d", number );

使用通常的STRINGIZE宏:

#define STRINGIZE_HELPER(x) # x
#define STIRNGIZE(x) STRINGIZE_HELPER(x)

(當然,最簡單,最安全的解決方案就是忘記sprintf ,並使用std::ostringstream 。)

有兩種方法可以解決這個問題:

  1. 擁有宏中的完整格式:

     #define MACR "%06d" sprintf(Formatted, MACR, Number); 
  2. 使用* width說明符:

     #define MACR 6 sprintf(Formatted, "%0*d", MACR, Number); 
#define MAKE_TEXT(x) #x
sprintf( Formatted, "%0"MAKE_TEXT(MACR)"d", Number );

暫無
暫無

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

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