Zapis wyniku funkcji do pliku, fprintf.
Ostatnio zmodyfikowano 2014-03-06 21:39
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. #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; float czas_trwania_grzania = 50 * czas_trwania_grzania_min; 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" ); 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 ] ); } fclose( plik_temp_segmII ); } system( "notepad temp_segmII.txt" ); printf( "koniec" ); getch(); return( 0 ); }
. |
|
Monika90 |
» 2014-03-06 20:30:01 fopen daj przed główną pętlą, a fclose po niej |
|
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. |
|
« 1 » |