当前位置:  技术问答>linux和unix

基本的printf问题?

    来源: 互联网  发布时间:2016-05-23

    本文导语:  #include  #include  int main() { printf("***********"); sleep(4); return 0; } 如上代码的输出是先睡眠4秒,再输出* 为什么不是先输出*,再睡眠4秒啊? OS: RH9.0 请各位大虾帮帮忙? | 加'n' IO缓冲的原因 |...


#include 
#include 

int main()
{
printf("***********");
sleep(4);
return 0;
}

如上代码的输出是先睡眠4秒,再输出*
为什么不是先输出*,再睡眠4秒啊?
OS: RH9.0

请各位大虾帮帮忙?

|
加'n'

IO缓冲的原因

|
标准输入输出函数是带缓冲的

lz 可以加个 'n' 或者 fflush(stdout)

|
行缓冲不是stdin stdout的属性,比如你重定向了标准备输入输出后就不是行缓冲了.
行缓冲是终端设备的属性.而程序的默入输入输也就是终商设备所以会这样. 

|
linux unix os! 刷新 行缓冲 是以'n'为标志的!
 stevens先生有讲过
详情见

|
晕,带缓冲就在缓冲里,并没有直接打到设备上去。等你程序退出的时候会有刷新缓冲区的动作,这个时候你的输出才会被输出到设备上去。
你用不带缓冲的write()写标准输出就不会有你说的问题了。

|
因为你没有刷新缓冲区。

#include  
#include  

int main() 

printf("***********n");    //这样就可以了
sleep(4); 
return 0; 



|
默认的 stdin stdout 是行缓冲,也就是它只有看到 'n'时 才开始刷新缓冲区。
你不加'n' 也可以,记得fflush就可以了。

|
UP!

|
虽然看似是个很简单的问题  但的确学到点东西

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.io类console的类成员方法: printf定义及介绍
  • 为什么会我调试程序的时候出现“printf.c: 没有那个文件或目录. in printf.c“
  • java命名空间java.io类printstream的类成员方法: printf定义及介绍
  • UDP包何printf?
  • java命名空间java.io类printwriter的类成员方法: printf定义及介绍
  • Linux 中的printf、open、close
  • Python中类似printf的字符串格式化详解
  • [求解]关于printf 与 ++ --的疑惑
  • printf的静态库在哪??
  • Eclipse对printf()不能输出到控制台的快速解决方法
  • printf的奇怪现象
  • linux printf文字编码设定?
  • 如何使用ar命令检查在标准的C库中收藏了多少与printf相关的函数
  • 如何在printf()中指定字段的宽度后,左端的用数字0而不用空格补全
  • UART_printf在哪里?
  • printf到指定终端
  • ld 报undefined reference to `printf'求解决方法
  • 帮我分析一下这个printf语句
  • 怎么把int64_t(即 long long)的值printf出来?
  • memcpy函数和printf函数的源码
  • 链接器链接目标文件和printf.o是怎么连接的


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3