问题标签 [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.
c - C 中的 u_char (*)[10] & char (*)[10] 格式说明符
我必须更正一个现有的 C 文件,它有一堆格式说明符编译错误。谁能说出以下情况的正确格式说明符:
u_char(*) [10]
(我试过 %s,但没有用)char(*) [10]
(我尝试了 %s 和 %c,但没有成功)
谢谢。
c - C 中的格式说明符 - %s 内的 %s
我有这样的东西
我希望输出是,My name is Tom
但我得到My name is %s
我试图逃避%
角色,但它不起作用。
这里出了什么问题?我怎么会有一个%s
inside a %s
?
c - 将浮点变量显示为十六进制整数会破坏相邻整数
我有这个简单的程序
我希望输出是
但我看到
为什么被a
搞砸的价值?%X
将它的参数视为signed int
,因此它应该从堆栈中检索 4 个字节并打印 calue,b
然后获取接下来的 4 个字节打印其a
值为0x120
c - Typedefs 和 printf 格式说明符
typedefs 的一个常见用途是使变量的“类型”能够更好地传达变量用途的概念,而无需重新定义其背后的存储结构。
但是,我也将 typedef 视为一次性更改一类变量的存储结构的一种方式。
例如,如果我定义
并且有 type 的变量,my_offset_t
将代码库从uint32_t
to切换到char
oruint64_t
就像更改一行并重新编译一样简单(假设我使用sizeof
了而不是硬编码的大小),除了 printf / scanf 的情况。
有没有一种方法可以根据类型以某种简单的方式交换格式说明符,而无需printf
/ scanf
、 if-elses 或 ifdefs 周围的包装函数?
谢谢!
对于任何感兴趣的人,我正在修改一个使用 16 位偏移量的 LKM 以使用 32 位偏移量,但希望它能够在必要时以最小的更改进入 64 位(或其他!)偏移量。
c++ - 用于打印 0.0、1.0、0.025 的 C/C++ 单一格式说明符
什么单一格式字符串可用于打印 0.0, 1.0, 0.025 ?例如给定:
所需的输出:
而是得到:
尝试了各种宽度说明符和 %f vs %g 但无法得到我想要的。
如果有一个 c++ 替代方案就可以了。
c - 奇怪的 C fprintf 格式表示法
当我注意到这段代码时,试图找出函数中的堆栈损坏错误:
我要问的是关于这条线"\n%s %3c %12s %2c %12s %2c %12s %2c %12s %2c" "%12s %2c %12s"
,我什至不明白它是如何编译的,因为我从未见过两种格式像这样相互跟随。谢谢你的帮助。
c - printf 的参数数量错误会导致奇怪的结果
使用 Turbo C 编译器,输出如下:
有人可以解释这是为什么吗?
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"
等的调用,以确保提供的参数具有适合指定格式字符串的类型,并且格式字符串中指定的转换有意义
c - 使用整数格式说明符而不是短整数:为什么代码会这样?
当我为以下程序提供 4 个整数作为输入(比如 a = 10、b = 20、d = 30、e = 40)时,它会计算c = a + b = 0
和f = d + e = 70
。我知道这种不寻常的行为是因为我为 short int 使用了错误的格式说明符,但这里到底发生了什么?为什么最后两个输入的和是正确的,而前两个数字的和总是= 0?