Błąd z plikiem
Ostatnio zmodyfikowano 2011-02-05 22:05
Tymek Temat założony przez niniejszego użytkownika |
Błąd z plikiem » 2011-02-05 17:11:56 #include <iostream> #include <fstream> using namespace std;
struct Student { char nazwisko[ 20 ]; char kierunek[ 20 ]; char lista_przedmiotow[ 20 ]; float oceny[ 10 ]; void wczytaj_plik(); void dodaj_studenta(); void srednia(); };
void Student::wczytaj_plik() { int n; fstream plik( "plik.txt", ios::out | ios::trunc ); cout << "podaj nazwisko" << endl; plik >> nazwisko; cout << "podaj kierunek" << endl; plik >> kierunek; cout << "ile masz przedmiotow" << endl; cin >> n; for( int i = 0; i < n; i++ ) { cout << "podaj nazwy tych przedmiotow" << endl; plik >> lista_przedmiotow; } plik.close(); }
int main() { Student * T; int liczba_studentow; cout << "podaj liczbe studentow" << endl; cin >> liczba_studentow; T = new Student[ liczba_studentow ]; for( int i = 0; i < liczba_studentow; i++ ) { T[ i ].wczytaj_plik(); } system( "pause" ); }
mam problem z plikiem , gdy chce wczytać coś do pliku np Nazwisko , To program mi się zapętla ciągle się pokazuje "podaj nazwisko" .... nie wiem jak ten problem rozwiązać |
|
ThudPoland |
» 2011-02-05 17:34:08 Jaką wartość przy inicjalizacji powinno mieć `n`? |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-02-05 17:43:29 no n jest int żeby móc podać liczbę przedmiotów |
|
ThudPoland |
» 2011-02-05 17:47:52 Fakt, wybacz, nie zauważyłem tego. Poszukam problemu. |
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-02-05 18:01:13 #include <iostream> #include <fstream> using namespace std;
struct Student { char nazwisko[ 20 ]; char kierunek[ 20 ]; char lista_przedmiotow[ 20 ]; float oceny[ 10 ]; void wczytaj_plik(); void dodaj_studenta(); void srednia(); };
void Student::wczytaj_plik() { int n; ofstream plik( "plik.txt", ios::out | ios::trunc ); cout << "podaj nazwisko" << endl; cin >> nazwisko; cout << "podaj kierunek" << endl; cin >> kierunek; cout << "ile masz przedmiotow" << endl; cin >> n; for( int i = 0; i < n; i++ ) { cout << "podaj nazwy tych przedmiotow" << endl; cin >> lista_przedmiotow; } plik.close(); }
int main() { Student * T; int liczba_studentow; cout << "podaj liczbe studentow" << endl; cin >> liczba_studentow; T = new Student[ liczba_studentow ]; for( int i = 0; i < liczba_studentow; i++ ) { T[ i ].wczytaj_plik(); } system( "pause" ); }
teraz działa niby poprawnie , ale nie zapisuje do pliku |
|
ison |
» 2011-02-05 18:07:32 //jeszcze zanim zedytowałeś swoją poprzednią wiadomość to działa ale nie zapisuje do pliku.
|
to ty chcesz w końcu wczytywać czy zapisywać dane do pliku? fstream plik( "plik.txt", ios::out | ios::trunc );
|
jeśli chcesz wczytywać to powinieneś użyć flagi ios::in jeśli chcesz zapisywać to użyj zamiast niby jak zmienię z plik>>nazwisko , na cin>>nazwisko to działa
|
jeśli używasz to do pliku jest zapisywana jedynie zmienna, nic nie jest wczytywane ze standardowego wejścia jeśli chcesz wczytać zmienną z wejścia i od razu ją zapisać do pliku: cin >> nazwisko; plik << nazwisko;
|
|
Tymek Temat założony przez niniejszego użytkownika |
» 2011-02-05 18:21:06 #include <iostream> #include <fstream> using namespace std;
struct Student { char nazwisko[ 20 ]; char kierunek[ 20 ]; char lista_przedmiotow[ 20 ]; float oceny[ 10 ]; void zapisz_plik(); void dodaj_studenta(); void srednia(); };
void Student::zapisz_plik() { fstream plik( "plik.txt", ios::out | ios::trunc ); cout << "podaj nazwisko" << endl; plik << nazwisko; cout << "podaj kierunek" << endl; plik << kierunek; cout << "ile masz przedmiotow" << endl; int n; cin >> n; for( int i = 0; i < n; i++ ) { cout << "podaj nazwy tych przedmiotow" << endl; plik << lista_przedmiotow; } plik.close(); }
int main() { Student * T; int liczba_studentow; cout << "podaj liczbe studentow" << endl; cin >> liczba_studentow; T = new Student[ liczba_studentow ]; for( int i = 0; i < liczba_studentow; i++ ) { T[ i ].zapisz_plik(); } system( "pause" ); }
chce zapisać w pliku. w funkcji_zapisz plik cout << "podaj nazwisko" << endl; plik << nazwisko; cout << "podaj kierunek" << endl; plik << kierunek; cout << "ile masz przedmiotow" << endl;
mi się to nie wykonuje , jest to omijane przez program pokazuje tylko Cout , ale nie da się wprowadzić np nazwiska do pliku , tylko przechodzi do int n. |
|
ison |
» 2011-02-05 18:22:25 mi się to nie wykonuje , jest to omijane przez program pokazuje tylko Cout , ale nie da się wprowadzić np nazwiska do pliku , tylko przechodzi do int n.
|
przeczytaj ze zrozumieniem mój poprzedni post to będziesz wiedział dlaczego tak się dzieje zapisuje tylko zmienną do pliku, nic nie wczytuje ze standardowego wejścia |
|
« 1 » 2 |