abcde 不幸的是,它不适用于数字(将 d 替换为 x 是相同的): printf(-6ren">
gpt4 book ai didi

printf - 指定数字的最大 printf 字段宽度(必要时截断)?

转载 作者:行者123 更新时间:2023-12-02 03:07:03 30 4
gpt4 key购买 nike

您可以使用 printf 字段宽度说明符截断字符串:

printf("%.5s", "abcdefgh");

> abcde

不幸的是,它不适用于数字(将 d 替换为 x 是相同的):

printf("%2d",   1234);  // for 34
printf("%.2d", 1234); // for 34
printf("%-2d", 1234); // for 12
printf("%-.2d", 1234); // for 12

> 1234

有没有一种简单/简单的方法来指定要打印的位数,即使这意味着截断数字?

MSDN 特别是 says that it will not happen这似乎是不必要的限制。 (是的,这可以通过创建字符串等来完成,但我希望有一个 “printf trick” 或聪明的拼凑。)

最佳答案

就像我的许多最好的想法一样,答案是在我躺在床上等待休眠时想到的(当时除了思考之外没有什么其他事可做)。

使用模数!

printf("%2d\n", 1234%10);   // for 4
printf("%2d\n", 1234%100); // for 34

printf("%2x\n", 1234%16); // for 2
printf("%2x\n", 1234%256); // for d2

这并不理想,因为它无法从左侧截断(例如,12 而不是 34),但它适用于主要用例。例如:

// print a decimal ruler
for (int i=0; i<36; i++)
printf("%d", i%10);

关于printf - 指定数字的最大 printf 字段宽度(必要时截断)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9953125/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com