我正在学习编程C
.你能解释一下这里为什么没有打印出来吗 提前致谢.
#include <stdio.h>
int main (void)
{
char a[]="abcde";
printf ("%s", a);
}
Run Code Online (Sandbox Code Playgroud)
438*_*427 12
在许多系统printf
上进行缓冲,即当您调用printf
输出时,将输出放在缓冲区中而不是立即打印.打印换行符时,将刷新缓冲区(也就是打印输出)\n
.
在所有系统上,程序将打印,尽管丢失,\n
因为程序结束时刷新缓冲区.
通常你会添加\n
像:
printf ("%s\n", a);
Run Code Online (Sandbox Code Playgroud)
立即获取输出的另一种方法是调用fflush
刷新缓冲区.从手册页:
对于输出流,fflush()强制通过流的底层写入函数写入给定输出或更新流的所有用户空间缓冲数据.
资料来源:http://man7.org/linux/man-pages/man3/fflush.3.html
编辑
正如@Barmar所指出并由@Alter Mann引用的那样,当程序结束时,需要刷新缓冲区.
引自@Alter Mann:
如果main函数返回其原始调用者,或者调用exit函数,则在程序终止之前关闭所有打开的文件(因此刷新所有输出流).