当前位置: 首页 > news >正文

Linux printf 函数输出问题

       printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有一下三种情况满足,才会输出到屏幕。
   1) 缓冲区满
   2) 强制刷新缓冲区 fflush
   3) 程序结束时
  1 #include<stdio.h>2 #include<stdlib.h>3 #include<unistd.h>4 int main()5 {6     printf("hello world\n");7     sleep(3);8     exit(0);9 }

编译运行:

gcc main.c -o main

./main

hello world

 我们发现屏幕上输出hello world 后,光标闪烁三秒,才出现命令输入提示行

 编译以下程序:

  1 #include<stdio.h>2 #include<stdlib.h>3 #include<unistd.h>4 int main()5 {6     printf("hello world");7     sleep(3);8     exit(0);9 }

编译运行:

gcc main.c -o main

./main

hello world stu@...

 我们看到执行可执行性程序main时,光标闪烁3秒后才输出hello world 然后屏幕出现命令输入提示行这是因为printf函数把输出内容放入到缓冲区中,当程序结束时,才把缓冲区的内容输出打印到屏幕上!(\n 有刷新缓冲区的功能

编写以下程序 强制刷新缓冲区 fflush()

  1 #include<stdio.h>2 #include<stdlib.h>3 #include<unistd.h>4 int main()5 {6     printf("hello world");7     fflush(stdout);8     sleep(3);9     exit(0);10 }

 编译运行:

gcc main.c -o main

./main

hello world stu@...

我们发现屏幕上输出hello world 后,光标闪烁三秒,才出现命令输入提示行 

http://www.lryc.cn/news/91375.html

相关文章:

  • 皮卡丘Unsafe Fileupload
  • 最优化简明版(上)
  • MySQL的一些介绍
  • unity发布webGL后无法预览解决
  • Flume和Kafka的组合使用
  • JSONSQL:使用SQL过滤JSON类型数据(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...
  • Linux输入输出重定向
  • 使用kettle进行数据统计
  • 线程的取消和清理
  • day8 -- 全文本搜索
  • C语言:if-else语句
  • C语言---函数
  • 【JVM】什么是双亲委派机制?
  • Vulkan Tutorial 7 纹理贴图
  • LinkedBlockingQueue阻塞队列
  • 面试-Redis 常见问题,后续面试遇到新的在补充
  • 2023年上半年数据库系统工程师上午真题及答案解析
  • 设计模式概念
  • arcpy批量对EXCE经纬度L进行投点,设置为wgs84坐标系,并利用该点计算每个区域内的核密度
  • Yolov5训练自己的数据集
  • Bert+FGSM中文文本分类
  • 爬楼梯问题-从暴力递归到动态规划(java)
  • 浏览器如何验证SSL证书?
  • Linux :: 【基础指令篇 :: 文件及目录操作:(10)】:: ll 指令 :: 查看指定目录下的文件详细信息
  • Java字符集/编码集
  • Apache配置与应用
  • API自动化测试【postman生成报告】
  • 探索OpenAI插件:ChatWithGit,memecreator,boolio
  • linux irq
  • 串口流控(CTS/RTS)使用详解