有人可以在 macOS 上运行这个 printf() 行吗?

问题描述 投票:0回答:1

我正在做一门课程,要求学生在 macOS 上测试他们的代码。因为我现在无法访问 macOS,所以我需要有人告诉我以下代码在 macOS 上的输出。我正在开发一个 Linux 发行版。如果您建议的话,我了解虚拟机,只是我无法在我的开发环境中访问它。让我解释一下这个测试的目的:我正在用 C 语言编写自己的 printf() 实现,并且我需要使 my_printf() 的行为与 macOS 上的 printf() 完全相同。

int main(void)
{
    char    c = 'A';
    char    *name = "Alex";

    printf("Hello %-5c my name is %2.ks :)\n", c, name);
}

我的输出是:Hello A,我的名字是 %2.0ks :)

P.S:我觉得很奇怪为什么 printf() 这里在 '%2.0ks' 处添加了 '0' 因为 '格式说明符' 无效,那么为什么 printf() 不只是像在其他中那样按字面打印字符串案例?!

尽力了解情况。预先感谢您的帮助。

c macos printf
1个回答
0
投票

可以发现,例如这里https://en.cppreference.com/w/c/io/fprintf

“k”不是有效的转换说明符 - 您已经意识到这一点。

规范的相关第二部分是

如果转换规范无效,则行为未定义

所以你的代码有未定义的行为,这是一个非常重要的技术术语,意味着即使在给定的明确定义的环境中,任何事情都可能发生,不可预测。

© www.soinside.com 2019 - 2024. All rights reserved.