Zapisywanie tekstu do pliku
Ostatnio zmodyfikowano 2009-06-19 20:48
pekfos |
» 2009-06-15 14:42:55 .clear() czyści flagi po czym można ponownie otworzyć jakiś plik |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2009-06-16 00:27:48 I znowu mam problem ;/ chce zeby program zapisywal cale zdania ale zapisuje mi tylko 1 zdanie. Prubuje i prubuje ale nie mam pomyslu jak to mozna jeszcze zrobic :( bede wdzieczny za podpowiedz ;] #include <fstream> #include <iostream> using namespace std; int main() { fstream plik( "plik.txt", ios::in ); if( plik.good() ) { cout << "Zawartosc pliku:" << endl; int dlugosc = 0; plik.seekg( 0, ios::end ); dlugosc = plik.tellg(); plik.seekg( 0, ios::beg ); char dane[ dlugosc ]; dane[ dlugosc ] = 0; plik.read( dane, dlugosc ); cout << dane << endl; plik.close(); plik.clear(); int b; int a; cout << "Ile chcesz wprowadzic zdan?? "; cin >> a; string zdanie[ b ]; plik.open( "plik.txt", ios::out | ios::app ); if( plik.good() ) { for( int i = 0; i < a; i++ ) { cout << ""; getline( cin, zdanie[ i ] ); plik.write( & zdanie[ i ], zdanie.length() ); } plik.close(); } } getchar(); return( 0 ); }
|
|
DejaVu |
» 2009-06-16 01:41:00 int b;
string zdanie[ b ];
for( int i = 0; i < a; i++ )
getline( cin, zdanie[ i ] );
1. Tworzysz zmienną b 2. Nie inicjujesz jej 3. Używasz innej zmiennej w pętli do sczytywania wartości (zmienna a) /edit: pierwszy parametr plik.write(...) powinien wyglądać: &zdanie[i][0] lub zdanie[i].c_str(). |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2009-06-16 02:08:43 Dalej nic ;/ pisze ze cos jest nietak z dlugoscia zdania ;/ "request for member `length' in `zdanie', which is of non-class type `std::string[((unsigned int)((int)b))]' " i nie wiem co jest nietak z dlugoscia zdania ;/
EDIT::
Zmienilem linijke plik.write na taka plik.write(&zdanie[i][0],zdanie[i].length()); i teraz jak odpalam program, podaje ile zdan chce wpisac to program sie sypie i zamyka ;/ |
|
pekfos |
» 2009-06-16 14:26:48 spróbuj strumieniem plik << zdanie[ b ] //edit: ja jak mam takie błędy to najpierw zanim napiszę na forum określam miejsce wystąpienia błędu. najłatwiejszy to napisać cout << "f "; na końcu każdej linijki skompilować i gdy wystąpi błąd policzyć znaki i wiesz gdzie masz błąd. to tak na przyszłość abyś mógł sam radzić sobie z takimi błędami:) |
|
DejaVu |
» 2009-06-16 14:28:51 Już napisałem wcześniej przyczynę. int b;
string zdanie[ b ]; |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2009-06-16 20:57:06 P. Piotrze ale ja chce zeby program zapisywal kilka zdan a jak mam tak jak piszesz to zapisuje mi tylko pierwsze zdanie ;/ kod wyglada teraz tak i zapisuje jedno zdanie oraz zamiast wypisywac te zdania pod soba to on je laczy ;/ (ale tym laczeniem to pewnie sobie poradze) #include <fstream> #include <iostream> using namespace std; int main() { fstream plik( "plik.txt", ios::in ); if( plik.good() ) { cout << "Zawartosc pliku:" << endl; int dlugosc = 0; plik.seekg( 0, ios::end ); dlugosc = plik.tellg(); plik.seekg( 0, ios::beg ); char dane[ dlugosc ]; dane[ dlugosc ] = 0; plik.read( dane, dlugosc ); cout << dane << endl; plik.close(); plik.clear(); int a; cout << "Ile chcesz wprowadzic zdan?? "; cin >> a; string zdanie; plik.open( "plik.txt", ios::out | ios::app ); if( plik.good() ) { for( int i = 0; i < a; i++ ) { cout << ""; getline( cin, zdanie ); plik.write( & zdanie[ 0 ], zdanie.length() ); } plik.close(); } } getchar(); return( 0 ); }
|
|
DejaVu |
» 2009-06-16 21:39:34 |
|
| 1 « 2 » 3 4 |