我试图写一条包含" alpha = abcd"的消息使用以下代码到文本文件:
#include <stdio.h>
#include <wchar.h>
int
main()
{
const wchar_t *a = L"abcd", *msg = L"alpha = %s\n";
FILE *f = fopen("./deleteme", "a");
fwprintf(f, msg, a);
fclose(f);
}
然而,在编译并执行程序后,我得到了这个输出:
alpha = a
为什么只将const a
中的第一个字符复制到输出?
答案 0 :(得分:2)
您需要更改:
{% if quantity_taxation_curr is defined and currency['code'] in quantity_taxation_curr %}
为:
L"alpha = %s\n";
您尝试打印的参数(L"alpha = %S\n";
)是宽字符串,因此您需要 a = L"abcd"
(大写)代替 %S
(小写)。对%s
使用不正确的格式说明符 - 类似函数是未定义的行为。
答案 1 :(得分:1)
使用符合C99的编译器,使用"%ls"
。
如果存在
l
长度修饰符,则参数应为指向wchar_t
类型数组的初始元素的指针。 C11dr§7.29.2.110。
// const wchar_t *msg = L"alpha = %s\n";
const wchar_t *msg = L"alpha = %ls\n";