Nadpisywanie pliku fstream
Ostatnio zmodyfikowano 2020-06-09 13:09
Steampunk0 Temat założony przez niniejszego użytkownika |
Nadpisywanie pliku fstream » 2020-06-09 01:57:55 Program generuje 10 liczb losowych z zakresu 1000-2000 i zapisuje je do pliku. Następnie za pomocą operacji odczytu ma zwrócić do konsoli największą z nich. Problem w tym, że przy każdym uruchomieniu programu jest to ta sama liczba chyba, że usunę plik tekstowy i stworzy się on od nowa. W jaki sposób sprawić, żeby program generując nowe liczby nadpisywał te znajdujące się w pliku? #include <iostream> #include <fstream> #include <cstdlib> #include <ctime>
using namespace std;
int tab[ 10 ]; int najwieksza_liczba; int main()
{ fstream plik( "plik.txt" ); plik.open( "plik.txt", ios::out ); srand( time( NULL ) ); for( int i = 1; i <= 10; i++ ) { plik << 1000 + rand() %( 1000 ) << endl; } plik.close(); plik.open( "plik.txt", ios::in ); string linia; int nr_linii = 1; while( getline( plik, linia ) ) { switch( nr_linii ) { case 1: tab[ 0 ] = atoi( linia.c_str() ); case 2: tab[ 1 ] = atoi( linia.c_str() ); case 3: tab[ 2 ] = atoi( linia.c_str() ); case 4: tab[ 3 ] = atoi( linia.c_str() ); case 5: tab[ 4 ] = atoi( linia.c_str() ); case 6: tab[ 5 ] = atoi( linia.c_str() ); case 7: tab[ 6 ] = atoi( linia.c_str() ); case 8: tab[ 7 ] = atoi( linia.c_str() ); case 9: tab[ 8 ] = atoi( linia.c_str() ); case 10: tab[ 9 ] = atoi( linia.c_str() ); } nr_linii++; } najwieksza_liczba = tab[ 0 ]; for( int x = 1; x < 10; x++ ) { if( tab[ x ] > najwieksza_liczba ) najwieksza_liczba = tab[ x ]; } cout << najwieksza_liczba << endl; plik.close(); return 0; }
|
|
Rashmistrz |
» 2020-06-09 03:46:08 Obsługa plików, użyj std::ios::trunc ( Zawartość pliku jest tracona, plik jest obcinany do 0 bajtów podczas otwierania.) |
|
Steampunk0 Temat założony przez niniejszego użytkownika |
» 2020-06-09 13:09:31 Już próbowałem, ale wpisywałem ją w złym miejscu. Teraz już działa dzięki wielke. |
|
« 1 » |