Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zapis wyniku funkcji do pliku, fprintf.

Ostatnio zmodyfikowano 2014-03-06 21:39
Autor Wiadomość
luk2504
Temat założony przez niniejszego użytkownika
Zapis wyniku funkcji do pliku, fprintf.
» 2014-03-06 20:18:13
Piszę funkcję, której wyniki chciałbym zapisać do pliku, jednak program zapisuje tylko ostatnią iterację z for do pliku. W oknie konsoli wyświetla się wszystko, chciałbym otrzymywać w pliku, to co otrzymuję w konsoli.

W pliku otrzymuję tylko ostatnią iterację, np:

 0.400000 2 9.900000
 0.400000 1 9.850499

A chciałbym otrzymywać dane dla wszystkich czasów, np:

 0.000000 2 9.900000
 0.000000 1 9.850499

 0.100000 2 9.900000
 0.100000 1 9.850499

itd, aż do

 4.999998 3 9.900000
 4.999998 2 9.900000

Walczę z problemem już dłuższy czas, gdzie kombinowałem już na wiele sposobów z umieszczeniem fprintf, bez skutków. Nie mam pojęcia, czy trzeba dopisać jakąś funkcję, czy umieścić w jakiś specjalny sposób fprintf.

C/C++
#include<stdio.h>


#define PLIK2 "temp_segmII.txt" 
int main()
{
    float Vseg = 10.0;
    int ilosc_segm = 3;
    float temp_segm[ 10 ];
    int Qd = 1;
    float krok_sym = 0.1;
    float czas_trwania_grzania_min = 0.01; //[m]
    float czas_trwania_grzania = 50 * czas_trwania_grzania_min; //[s]
   
    int i;
    float czas;
   
    float lambda_gora = 1.0;
    float lambda_dol = 0.5;
    float lambda;
   
    float Q;
    FILE * plik_temp_segmII;
   
   
    for( czas == 0.0; czas < czas_trwania_grzania; czas = czas + krok_sym )
   
    {
        plik_temp_segmII = fopen( PLIK2, "w" ); // fopen zwraca wskaźnik jesli plik uda sie otworzyc poprawienie, 'w' oznacza write- czyli zapis
        printf( "Czas: %f  \n", czas );
       
        for( i = ilosc_segm; i > 0; i-- )
       
        {
           
            if( i > 0 )
                 temp_segm[ i ] =( Vseg - Qd * krok_sym );
            else
                 temp_segm[ i ] =( Vseg - Qd * krok_sym );
           
            printf( "\tSegment %i: %f \n ", i, temp_segm[ i ] );
           
        }
       
        for( i = ilosc_segm; i > 1; i-- )
        {
           
            lambda = 0.0;
            if( temp_segm[ i ] < temp_segm[ i - 1 ] )
                 lambda = lambda_gora;
           
            if( temp_segm[ i ] > temp_segm[ i - 1 ] )
                 lambda = lambda_dol;
           
            Q = lambda * krok_sym *( temp_segm[ i - 1 ] - temp_segm[ i ] );
           
            if( i < ilosc_segm )
                 temp_segm[ i ] += Q / Vseg;
           
            if( i > 1 )
                 temp_segm[ i - 1 ] -= Q / Vseg;
           
            fprintf( plik_temp_segmII, " %f \t %i\t %-3f\n", czas, i, temp_segm[ i ] ); // zapisanie w pliku
        }
       
        fclose( plik_temp_segmII ); //zamyka plik
       
    }
    system( "notepad temp_segmII.txt" );
   
    printf( "koniec" );
    getch();
    return( 0 );
   
}
.
P-105768
Monika90
» 2014-03-06 20:30:01
fopen daj przed główną pętlą, a fclose po niej
P-105770
luk2504
Temat założony przez niniejszego użytkownika
» 2014-03-06 21:39:57
Dzięki, podziałało. Ta kombinacja musiała mi uciec.
P-105777
« 1 »
  Strona 1 z 1