VS2019 C语言 标准输出流,重定向乱码问题
#include <stdio.h>#include <string.h>
int main(void)
{
char buff = "\0";
// 指定 buff 为缓冲区,_IOFBF 表示当缓冲区已满时才写入 stdout
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "结束时才打印\n");
return 0;
}
使用的是C++.c后缀,在输出时输出乱码。
尝试复制到vim编译器,可以正确输出。
不加setvbuf 可以正确输出中文。
请问这是什么原因呀。 {:10_249:} {:10_277:} dd {:5_108:} 刚接触pyton,没学其他语言的我表示看不懂 本帖最后由 人造人 于 2021-2-21 12:45 编辑
你注释上写了,等缓冲区满了才输出,所以调用fprintf函数的时候不输出 "结束时才打印\n",等结束程序之前才输出,这时main函数已经返回了,局部变量buff已经释放了,buff中存储的"结束时才打印\n"已经没了,变成了其他东西了
加static让buff变量在整个程序的生命周期都有效,这样就没问题了
#include <stdio.h>
#include <string.h>
int main(void)
{
static char buff = "\0";
// 指定 buff 为缓冲区,_IOFBF 表示当缓冲区已满时才写入 stdout
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "结束时才打印\n");
return 0;
} 人造人 发表于 2021-2-21 12:36
你注释上写了,等缓冲区满了才输出,所以调用fprintf函数的时候不输出 "结束时才打印\n",等结束程序之前才 ...
谢谢大佬
页:
[1]