gpt4 book ai didi

c - 不同 libc 实现中 wprintf() 中 "%s"的不同行为

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:52 24 4
gpt4 key购买 nike

我注意到了

#include <stdio.h>
wprintf( L"Hello, %s\n", "world" );

在 Linux 下与标准 glibc 一起工作,同样的事情与 newlib 的工作方式不同。似乎 newlib 期望那里的 "%s"是宽字符串,所以下面的工作代替了:

wprintf( L"Hello, %s\n", L"world" );

哪种行为是正确的?这是 newlib 中的错误吗?另外,有没有办法在 printf 字符串格式说明符中明确指定我想要一个“窄”字符串,而不是一个宽字符串?

最佳答案

宽字符串 (wchar_t *) 的正确格式说明符是 %ls,对于普通的“窄”C 字符串 (char * ) 是 %s。 glibc的实现是正确的。

关于c - 不同 libc 实现中 wprintf() 中 "%s"的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com