昨天我太累了,无法发布正确而具体的问题。就是这样:

if (t==2){
    printf ("abc\n");
    printf ("abc = "); scanf ("%f",&r);
    printf ("abc = "); scanf ("%d",&n);
    printf ("abc = "); scanf ("%d",&k);
    a=2*r;
    b=2*r;
    c=2*r;

    for (i=0;i<=n;i++){
        float x=(float)rand()/((float)RAND_MAX/a);
        float y=(float)rand()/((float)RAND_MAX/b);
        float z=(float)rand()/((float)RAND_MAX/c);

        if ((x-(r))*(x-(r))+(y-(r))*(y-(r))+(z-(r))*(z-(r))<=(r*r))
            m++;

            if ( i % k ==0 && i > 0 ){
                freopen ( "data.txt","w", stdout );
                printf("%s %s      %s \n","#","n","Vka");
                Vka = ( 2*r*2*r*2*r )*m/i;
                printf("% 6.2f % 6.2f \n",n,Vka);
                fclose (stdout);
            }

    }

    Vk=(2*r*2*r*2*r)*m/n;
    printf ("abc =%d\n", m);
    printf ("abc=%d\n", n);
    printf("abc =%f", Vk);

    }


不幸的是,该程序无法正常运行,因为我希望它能正常工作。它应该将数据导出到文件“ data.txt”,但是该文件仍然看起来像这样:

# n      Vka
0.00   0.00


Morover程序在创建此文件后立即完成操作,而我希望它在终端中打印Vk时完成操作。

最佳答案

在循环之前打开文件
使用fprintf写入循环内的文件
循环后关闭文件


该程序完全没有理由与stdout产生混乱。

08-17 04:33