Questions tagged «printf»

printf是格式化输出的常用功能。C和许多其他语言具有一整套相关功能。如果问题直接与`printf`或相关功能有关,则仅使用此标签。



13
避免在printf()中尾随零
我一直在为printf()系列函数的格式说明符绊脚石。我想要的是能够在小数点后以最大的给定位数打印双精度(或浮点数)。如果我使用: printf("%1.3f", 359.01335); printf("%1.3f", 359.00999); 我懂了 359.013 359.010 而不是期望的 359.013 359.01 有谁能够帮我?
107 c  printf 

5
Python的字符串格式化的许多方式-较旧的(即将被淘汰)吗?
Python至少有六种格式化字符串的方式: In [1]: world = "Earth" # method 1a In [2]: "Hello, %s" % world Out[2]: 'Hello, Earth' # method 1b In [3]: "Hello, %(planet)s" % {"planet": world} Out[3]: 'Hello, Earth' # method 2a In [4]: "Hello, {0}".format(world) Out[4]: 'Hello, Earth' # method 2b In [5]: "Hello, {planet}".format(planet=world) Out[5]: 'Hello, …

1
Haskell printf如何工作?
Haskell的类型安全是第二首屈一指只依赖类型语言。但是Text.Printf有一些深层的魔力,似乎很打字。 > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 这背后的深层魔力是什么?Text.Printf.printf函数如何接受像这样的可变参数? Haskell中允许可变参数使用的一般技术是什么,它是如何工作的? (附带说明:使用此技术时,某些类型的安全性显然丢失了。) > :t printf "%d\n" "foo" printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t

8
Printf宽度说明符可保持浮点值的精度
是否有一个printf宽度说明符可以应用于浮点说明符,该宽度说明符会自动将输出格式化为必要数量的有效数字,以便在回扫字符串时获取原始的浮点值? 例如,假设我float将a 打印到2小数点后的精度: float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 当我扫描输出时0.94,我没有符合标准的保证,即会获得原始的0.9375浮点值(在此示例中,我可能不会)。 我希望有一种方法可以告诉printf您自动将浮点值打印到必要的有效位数,以确保可以将其扫描回传递给的原始值printf。 我可以使用其中的一些宏float.h来导出要传递的最大宽度printf,但是是否已有说明符可以自动打印到必要数量的有效数字 -或至少打印到最大宽度?

7
在C中打印十六进制字符
我试图读取一行字符,然后打印出等价的十六进制字符。 例如,如果我有一个字符串,该字符串"0xc0 0xc0 abc123"的前2个字符c0用十六进制表示,其余字符abc123用ASCII表示,那么我应该得到 c0 c0 61 62 63 31 32 33 但是,printf使用%x给了我 ffffffc0 ffffffc0 61 62 63 31 32 33 没有,如何获得所需的输出"ffffff"?为什么只有c0(和80)具有ffffff,而其他字符却没有呢?
103 c  hex  printf 


4
uint32_t和size_t的printf格式说明符
我有以下 size_t i = 0; uint32_t k = 0; printf("i [ %lu ] k [ %u ]\n", i, k); 编译时收到以下警告: format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’ 当我使用夹板运行此程序时,我得到以下信息: Format argument 1 to printf (%u) expects unsigned int gets size_t: k 非常感谢您的任何建议,
101 c  printf 


9
在C ++中将代码清除为printf size_t(或:在C ++中与C99的%z最接近)
我有一些C ++代码可以显示size_t: size_t a; printf("%lu", a); 我希望在32位和64位体系结构上进行编译而不会发出警告。 如果这是C99,则可以使用printf("%z", a);。但是AFAICT %z在任何标准C ++方言中都不存在。所以我要做 printf("%lu", (unsigned long) a); 这真的很丑。 如果size_t语言中没有内置的用于打印s的功能,我想知道是否有可能编写一个printf包装器或诸如此类的东西,以便在size_ts 上插入适当的强制转换,从而消除虚假的编译器警告,同时仍保持良好的警告。 有任何想法吗? 编辑以弄清为什么我使用printf:我有一个相对较大的代码库正在清理。它使用printf包装器执行“写警告,将其记录到文件中,并可能由于错误而退出代码”之类的操作。我也许能够使用cout包装器来聚集足够的C ++-foo,但是我不想改变程序中的每个warn()调用只是为了摆脱一些编译器警告。
96 c++  printf  size-t 


8
在printf中使用颜色
当这样写时,它以蓝色输出文本: printf "\e[1;34mThis is a blue text.\e[0m" 但我想在printf中定义格式: printf '%-6s' "This is text" 现在,我尝试了几种添加颜色的方法,但没有成功: printf '%-6s' "\e[1;34mThis is text\e[0m" 我什至尝试添加属性代码来格式化,但没有成功。这是行不通的,在任何地方都找不到将颜色添加到printf的示例,该示例已经定义了格式。
90 linux  bash  colors  printf 

13
该程序如何工作?
#include <stdio.h> int main() { float a = 1234.5f; printf("%d\n", a); return 0; } 它显示一个0!! 那怎么可能?这是什么原因? 我故意%d在printf声明中加入,以研究的行为printf。
88 c++  c  memory  printf  endianness 

10
为什么printf(“%f”,0); 给未定义的行为?
该声明 printf("%f\n",0.0f); 打印0。 但是,声明 printf("%f\n",0); 打印随机值。 我意识到我表现出某种不确定的行为,但我不知道具体为什么。 所有位均为0的浮点值仍然是有效的float,值为0。 float并且int在我的计算机上具有相同的大小(如果相关)。 为什么使用整数文字而不是浮点文字printf会导致此行为? PS如果我使用可以看到相同的行为 int i = 0; printf("%f\n", i);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.