关于fprintf与缓冲区的一点发现

本文主要探讨了fprintf函数在默认情况下的缓冲区行为,指出只有在缓冲区溢出或程序自然结束时,数据才会被写入文件。作者作为C语言新手,希望通过分享这个发现,帮助其他新手理解这一现象,并提供了一个使用fflush函数实现实时输出的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说结论:fprintf函数在默认情况下只有当缓冲区溢出或是程序自然停止时时才会输出数据到文件。

 而当程序中止(例ctrl+c)时,若缓冲区未满 缓冲区亦不会向目标输出流


也许上面说的是大多数人都知道的 或是网上早有类似之叙述;但是作为一名c新手 望藉此文章给别的对此类问题不明的新手以参考。若上述结论存在不正或不严谨之处 亦欢迎所见之士予以指正。

问题发现:

在进行一次大量循环的问题分析时,用到如下代码:

#include<stdio.h>
#include<stdlib.h>
int rand1(void);
int main()
{
    FILE *fp;
    fp=fopen("output.csv","w");
    float origin[25]={348,352,347,349,347.5,347,330,329,329,327.5,329,331.5,348.5,347,346.5,348,347.5,348,333,330,332.5,331.5,331.5,332,332};
    float target[25]={0};
    float total[5]={0};
    int times=0;
    int r_times=0;
    int k,m,n,t,max;
    printf("Please enter the max value:");
    scanf("%d",&max);
    getchar();
    while(1)
    {
      for(m=0;m<25;m++)
      {
        k=rand1();
        target[k]=origin[m];
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值