c - 尝试复制有关可变参数的 printf 行为

我正在尝试复制一些 printf 功能用于教育目的,但我遇到了一些我无法理解的 printf 行为。我将尝试用一个简单的例子来解释:

有这个电话:

printf(" %c %c %c", 0, 1, 2); // yes, parameters are ints not chars.

输出看起来很正常,只有3个空格,数字被忽略了。

但是将 printf 输出到一个文件,然后使用“cat -e file”会这样做:

 ^@ ^A ^B

^@ 代表 0,^A 代表 1,^B 代表 2,依此类推。

这是我的问题,这些符号是什么?它们与值(value)观有何关系?

还有我自己的 printf,也是这样做的除了被视为 '\0' 字符的 0...我需要模仿 printf 正是这样我需要了解那里发生了什么...

我搜索了那些符号,但找不到任何东西。它们不是内存垃圾,因为结果总是相同的。

最佳答案

cat-e 选项告诉它使用特定的符号来打印不可打印的字符。 ^@代表值0,^A代表值1,^B代表值2。这些正是你给的值.

https://stackoverflow.com/questions/75261067/

相关文章:

perl - Perl 包变量什么时候超出范围?

python - 根据条件将新数据从另一个 Dataframe 添加到 Dataframe

sql-server-2005 - 强制 SQL Server 列为特定值

c++ - std::variant 使用整数数组中的元素作为 std::variant 中的目标类

sql-server - 从现有数据库生成 SQL DDL 和内容的工具

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back

fortran - Fortran 能否在逻辑运算中强制遵守参数顺序?

.net - .NET : System. InvalidOperationException :

python - 查找给定范围内的数字,使给定列表中任何元素的数字的 gcd 始终为 1

vbscript - 当我的 InstallShield 安装程序尝试运行我的 VBS 自定义操作时