gpt4 book ai didi

c - 单个 C 代码中的 printf 和 wprintf

转载 作者:太空狗 更新时间:2023-10-29 16:28:47 25 4
gpt4 key购买 nike

我在代码中同时使用 printfwprintf 函数时遇到问题。如果先打印常规字符串,则 wprintf 不起作用。如果我先使用 wprintf,则 printf 不起作用。

#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL,"");

printf("No printing!\n");
wprintf(L"Printing!\n");
wprintf(L"Wide char\n");
printf("ASCII\n");
return 0;
}

输出:

No printing!
ASCII

同时

#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL,"");

wprintf(L"Printing!\n");
printf("No printing!\n");
wprintf(L"Wide char\n");
printf("ASCII\n");
return 0;
}

输出:

Printing!
Wide char

我在 64 位 Linux 3.0 上使用 gcc (GCC) 4.6.1 20110819 和 glibc 2.14。

最佳答案

这是意料之中的;您的代码正在调用未定义的行为。根据 C 标准,每个 FILE 流都与一个“方向”(“字节”或“宽度”)相关联,该方向由对其执行的第一个操作设置,并且可以使用fwide 函数。调用任何其方向与流的方向冲突的函数会导致未定义的行为。

关于c - 单个 C 代码中的 printf 和 wprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8681623/

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