我正在尝试复制一些 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/
相关文章:
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 :