neke Temat założony przez niniejszego użytkownika |
zapisywanie do pliku » 2011-03-01 22:31:09 Witam, W ferworze walki z kursem poległem tym razem na wpisywaniu tekstu do pliku. Próbując zastosować informacje z kursu za cholerę nie mogę uzyskać oczekiwanego efektu. Napisałem program, który wczytuje trzema wspomnianymi sposobami informacje do pliku a następnie wyświetla je. Nie działa on jednak tak jak powinien. Będę wdzięczny za poprawienie kodu. Uwagi w stylu "mozna to przecież zrobić łatwiej za pomocą szybkiej transormaty Fouriera przy uwzględnieniu teorii względności", są oczywiście bardzo pouczające. Nie dla mnie jednak ze względu na moją stosunkową mizerną wiedzę o języku. Dlatego będę wdzięczny za wskazanie błędów w obecnym kodzie :) #include <fstream> #include <string> #include <conio.h> #include <iostream>
using namespace std;
int main() { fstream plik; plik.open( "D:\\aa.txt", ios::in | ios::out ); string tekst; cin.getline( tekst, 1024 ); plik << tekst; plik.close(); plik( "D:\\bb.txt", ios::in | ios::out ); char bufor[ 30 ]; char * wskaznik = & bufor; cin.getline( bufor, 30 ); plik.write( * wskaznik, bufor.length( 1024 ) ); plik.close(); plik.open( "D:\aa.txt", ios::in | ios::out ); if( plik.good() == true ) { char dane[ 1024 ]; plik.read( dane, 1024 ); cout << dane << endl; plik.close(); } else cout << "Nie udalo sie otworzyc pliku aa" << endl; plik.open( "D:\bb.txt", ios::in | ios::out ); if( plik.good() == true ) { string data; getline( plik, data ); cout << data << endl << endl; plik.close(); } else cout << "Nie udalo sie otworzyc pliku bb"; getch(); return( 0 ); }
|
|
malan |
» 2011-03-01 23:06:08 Po pobieżnej analizie kodu mówię: |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-03-02 11:14:53 1. Ok 2. Ok 3. wskaznik jest uzywany w kodzie ponizej dlatego powinien tam moim zdaniem zostac. 4. Niestety jestem na takim etapie nauki ze samo lakoniczne stwierdzenie jak wyglada np. fsteam.open mi nie wystarcza, dlaego prosiłem o poprawienie mojego kodu. W ten sposób najlatwiej sie nauczyc i zrozumiec zagadnienie.
Będę wdzięczny za pomoc. |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-03-02 19:09:39 Czy potrafi kto fskazć błedy? Dla fprawnej osoby to to chyba nie problem? |
|
malan |
» 2011-03-02 20:31:06 Gdybyś poprawił to, co Ci wypisałem to problemów by nie było. A jakby były to zapewne na podstawie treści błędu kompilatora sam byś doszedł co jest nie tak... |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-03-03 15:37:27 Dobra. Trochę posiedziałem nad tym kodem i dane się wczytują. Pozostały tylko małe problemy z którymi sobie nie radzę: 1. program nie tworzy nowych plików (bb.txt, cc.txt)? 2. w części zapisywanie blokami wywala błąd gdy chcę zastąpić "&bufor" równoznacznym "wskaznik"? 3. jaka jest praktyczna różnica pomiędzy wczytywaniem danych do pliku poprzez string i char [1000]? 4. jaka jest praktyczna różnica pomiędzy wczytywaniem danych do pliku poprzez strumień i blok (oprócz innego zapisu)? 5. Czy można wczytać do pliku enter (po to by tekst zapisywał się w nowej linii)? 6. Dlaczego przy wykorzystaniu char dane wpisuje się do pliku jak niżej char tekst[ 50 ]; cin.getline( tekst, 1024 );
natomiast przy wykorzystaniu stringa trzeba użyć innej metody? string B; getline( cin, B );
#include <fstream> #include <string> #include <conio.h> #include <iostream>
using namespace std;
int main() { fstream plik; plik.open( "D:\\aa.txt", ios::in | ios::out ); char tekst[ 50 ]; cin.getline( tekst, 1024 ); plik << tekst; plik.close(); plik.open( "D:\\bb.txt", ios::in | ios::out ); string B; getline( cin, B ); plik << B; plik.close(); plik.open( "D:\\cc.txt", ios::in | ios::out ); string bufor; getline( cin, bufor ); string * wskaznik = & bufor; plik.write( & bufor[ 0 ], bufor.length() ); plik.close(); plik.open( "D:\\aa.txt", ios::in | ios::out ); if( plik.good() == true ) { char dane[ 1024 ]; plik.read( dane, 1024 ); cout << dane << endl; plik.close(); } else cout << "Nie udalo sie otworzyc pliku aa" << endl; plik.open( "D:\\bb.txt", ios::in | ios::out ); if( plik.good() == true ) { char dane[ 1024 ]; plik.read( dane, 1024 ); cout << dane << endl; plik.close(); } else cout << "Nie udalo sie otworzyc pliku bb" << endl; plik.open( "D:\\cc.txt", ios::in | ios::out ); if( plik.good() == true ) { string napis; getline( plik, napis ); cout << napis << endl << endl; plik.close(); } else cout << "Nie udalo sie otworzyc pliku cc" << endl; getch(); return( 0 ); }
|
|
« 1 » |