问题标签 [format-specifiers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
706 浏览

c - C 中的 u_char (*)[10] & char (*)[10] 格式说明符

我必须更正一个现有的 C 文件,它有一堆格式说明符编译错误。谁能说出以下情况的正确格式说明符:

  1. u_char(*) [10](我试过 %s,但没有用)

  2. char(*) [10](我尝试了 %s 和 %c,但没有成功)

谢谢。

0 投票
5 回答
35284 浏览

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

0 投票
5 回答
4323 浏览

c - C 中的格式说明符 - %s 内的 %s

我有这样的东西

我希望输出是,My name is Tom但我得到My name is %s

我试图逃避%角色,但它不起作用。

这里出了什么问题?我怎么会有一个%sinside a %s

0 投票
2 回答
463 浏览

c - 将浮点变量显示为十六进制整数会破坏相邻整数

我有这个简单的程序

我希望输出是

但我看到

为什么被a搞砸的价值?%X将它的参数视为signed int,因此它应该从堆栈中检索 4 个字节并打印 calue,b然后获取接下来的 4 个字节打印其a值为0x120

0 投票
3 回答
6400 浏览

c - Typedefs 和 printf 格式说明符

typedefs 的一个常见用途是使变量的“类型”能够更好地传达变量用途的概念,而无需重新定义其背后的存储结构。

但是,我也将 typedef 视为一次性更改一类变量的存储结构的一种方式。

例如,如果我定义

并且有 type 的变量,my_offset_t将代码库从uint32_tto切换到charoruint64_t就像更改一行并重新编译一样简单(假设我使用sizeof了而不是硬编码的大小),除了 printf / scanf 的情况

有没有一种方法可以根据类型以某种简单的方式交换格式说明符,而无需printf/ scanf、 if-elses 或 ifdefs 周围的包装函数?

谢谢!

对于任何感兴趣的人,我正在修改一个使用 16 位偏移量的 LKM 以使用 32 位偏移量,但希望它能够在必要时以最小的更改进入 64 位(或其他!)偏移量。

0 投票
3 回答
5442 浏览

c++ - 用于打印 0.0、1.0、0.025 的 C/C++ 单一格式说明符

什么单一格式字符串可用于打印 0.0, 1.0, 0.025 ?例如给定:

所需的输出:

而是得到:

尝试了各种宽度说明符和 %f vs %g 但无法得到我想要的。

如果有一个 c++ 替代方案就可以了。

0 投票
3 回答
1213 浏览

c - 奇怪的 C fprintf 格式表示法

当我注意到这段代码时,试图找出函数中的堆栈损坏错误:

我要问的是关于这条线"\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c" "%12s %2c %12s",我什至不明白它是如何编译的,因为我从未见过两种格式像这样相互跟随。谢谢你的帮助。

0 投票
4 回答
2066 浏览

c - printf 的参数数量错误会导致奇怪的结果

使用 Turbo C 编译器,输出如下:

有人可以解释这是为什么吗?

0 投票
1 回答
2891 浏览

c - 为什么 gcc -Wformat 不警告 unsigned int 上的 printf %d?

以下程序具有未定义的行为:

C99 7.19.6.1p8 状态 %d 需要一个 int 参数。

C99 7.19.6.1p9 声明“如果任何参数不是相应转换规范的正确类型,则行为 未定义。”

但是,gcc -Wformat(包含在 中-Wall)不会抱怨上述程序,为什么?这是一个错误,还是故意遗漏?

从 gcc 手册页:

检查对"printf"and"scanf"等的调用,以确保提供的参数具有适合指定格式字符串的类型,并且格式字符串中指定的转换有意义

0 投票
3 回答
1671 浏览

c - 使用整数格式说明符而不是短整数:为什么代码会这样?

当我为以下程序提供 4 个整数作为输入(比如 a = 10、b = 20、d = 30、e = 40)时,它会计算c = a + b = 0f = d + e = 70。我知道这种不寻常的行为是因为我为 short int 使用了错误的格式说明符,但这里到底发生了什么?为什么最后两个输入的和是正确的,而前两个数字的和总是= 0?