printf 与stdout行缓冲问题求解

jia_jianlei 2014-07-04 08:11:18
int main(int argc, const char *argv[])
{
printf("dd>");
while(1);
return 0;
}
如上代码由于有输出缓冲的问题一直不会有输出。

int main(int argc, const char *argv[])
{
printf("dd>");
getchar();
while(1);
return 0;
}
加一个输入就会输出了,用fgetc,fgets也会使dd>输出。为会stdin的函数会影响stdout?
下面用没有缓冲的函数dd>就不输出了,这又是为什么啊?

linux@ubuntu:~/myPractice/network/server$ cat -n hh.c
1 #include <stdio.h>
2 #include <unistd.h>
3
4 int main(int argc, const char *argv[])
5 {
6 char buff[10];
7
8 printf("dd>");
9 read(STDIN_FILENO,buff,1);
10 write(STDOUT_FILENO,buff,1);
11 //fgets(buff, 10, stdin);
12 //fgetc(stdin);
13 while(1);
14 return 0;
15 }
linux@ubuntu:~/myPractice/network/server$ gcc hh.c
linux@ubuntu:~/myPractice/network/server$ ./a.out
jklkkk
j

...全文
131 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jia_jianlei 2014-07-05
  • 打赏
  • 举报
回复
引用 5 楼 mujiok2003 的回复:
这个问题和你的一样,看看吧。
看来标准没有规定,就看所用的编译器了。
引用 1 楼 taodm 的回复:
1,第一段代码,完全可能是有正常输出的。如果谁跟你说的有缓冲区就不输出了,去吐他一脸去 2,C++才规定了stdin的时候默认一定要去先刷新stdout,标准的规定。C99有没有在C++标准出来后跟进这个规定,自己去查标准。 3,自己多找几个编译器来试。
用turbo c用printf("dd>");while(1); 是有输出的。gcc就没有了。 感谢^_^
mujiok2003 2014-07-05
  • 打赏
  • 举报
回复
这个问题和你的一样,看看吧。
mujiok2003 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 colddown 的回复:
逻辑上stdin前先刷stdout是合理的,用户得看到输出提示才能知道输入什么
在stdin, stdout指向同一个终端时,是的。 如果有重定向, 则没有必要。
colddown 2014-07-04
  • 打赏
  • 举报
回复
逻辑上stdin前先刷stdout是合理的,用户得看到输出提示才能知道输入什么
taodm 2014-07-04
  • 打赏
  • 举报
回复
4,这是一个没有实际用途的话题,别在上面浪费太多生命。
taodm 2014-07-04
  • 打赏
  • 举报
回复
1,第一段代码,完全可能是有正常输出的。如果谁跟你说的有缓冲区就不输出了,去吐他一脸去 2,C++才规定了stdin的时候默认一定要去先刷新stdout,标准的规定。C99有没有在C++标准出来后跟进这个规定,自己去查标准。 3,自己多找几个编译器来试。
2024 年 Uber 乘车分析数据集 这个综合数据集包含 2024 年 Uber 运营的详细拼车数据,提供了有关预订模式、车辆性能、收入流、取消为和客户满意度指标的丰富见解。 数据集概述 该数据集捕获了多种车辆类型的 148,770 个总预订,并提供了拼车作的完整视图,包括成功乘车、取消、客户为和财务指标。 主要统计数据: 总预订量:148.77K 次乘车 成功率:65.96%(93K 完成骑) 取消率:25%(37.43K 取消预订) 客户取消:19.15%(27K 乘车) 司机取消: 7.45% (10.5K 乘车) 数据模式 数据集包含以下列: 列名称 描述 Date 预订日期 Time 预订时间 Booking ID 每次程预订的唯一标识符 Booking Status 预订状态(已完成、客户取消、司机取消等) Customer ID 客户的唯一标识符 Vehicle Type 车辆类型(Go Mini、Go Sedan、Auto、eBike/Bike、UberXL、Premier Sedan) Pickup Location 游乐设施的起点 Drop Location 乘车目的地 Avg VTAT 司机到达上车地点的平均时间(以分钟为单位) Avg CTAT 从取件到目的地的平均程时间(以分钟为单位) Cancelled Rides by Customer 客户发起的取消标志 Reason for cancelling by Customer 客户取消原因 Cancelled Rides by Driver 驱动程序启动的取消标志 Driver Cancellation Reason 司机取消原因 Incomplete Rides 未完成骑标志 Incomplete Rides Reason 不完整骑的原因

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧