[英]Decoding printf statements in C (Printf Primer)
我正在努力將一些舊代碼從1998年帶到21世紀。 該過程的第一步是將printf語句轉換為QString變量。 不管我多少次回頭看看printf,我總是忘記了一件事。 所以,為了好玩,讓我們一起解碼它,為了時間的緣故,並在此過程中為Stackoverflow創建第一個小'printf primer' 。
在代碼中,我遇到了這個小寶石,
printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);
如何格式化變量a,b,c,d,e,f,g?
@Jason Day ,我認為如果少於4個字符,那么最后一個%4s中的4是重要的。 如果你有4個以上是正確的,%4s和%s將是相同的,但是在g%s中少於4個字符將被左對齊,而%4s將在4個char字段中右對齊。
b實際上是整個字段的最小16個字符,包括小數和小數點后的單個數字(16個字符總數與18個字符總數)
這是我的printf入門: http : //www.pixelbeat.org/programming/gcc/format_specs.html
我總是用-ccall與gcc編譯,它將警告所提供的printf格式和變量之間的任何不匹配。
@jj33,你在兩個方面都是對的。
#include <stdio.h>
int main(int argc, char *argv[]) {
char *s = "Hello, World";
char *s2 = "he";
printf("4s: '%4s'\n", s);
printf(".4s: '%.4s'\n", s);
printf("4s2: '%4s'\n", s2);
printf(".4s2: '%.4s'\n", s2);
return 0;
}
$ gcc -o foo foo.c
$ ./foo
4s: 'Hello, World'
.4s: 'Hell'
4s2: ' he'
.4s2: 'he'
接得好!
你真正需要的是一個工具,它接受printf()語句中的格式字符串,並將它們轉換為基於QString的等效函數調用。
有沒有人想花費他的自由軟件捐贈時間來開發這樣的工具?
URL的占位符,用於保存此類工具的源代碼的自由軟件托管服務
一種。 十進制,四位有效數字
灣 不確定
C。 十六進制,最少4個字符
d。 十六進制,最少2個字符
即 1個字符
F。 字符串,最少4個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.