先说结论: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];
}