Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Błąd z plikiem

Ostatnio zmodyfikowano 2011-02-05 22:05
Autor Wiadomość
Tymek
Temat założony przez niniejszego użytkownika
Błąd z plikiem
» 2011-02-05 17:11:56
C/C++
#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ć
P-27842
ThudPoland
» 2011-02-05 17:34:08
Jaką wartość przy inicjalizacji powinno mieć `n`?
P-27843
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
P-27844
ThudPoland
» 2011-02-05 17:47:52
Fakt, wybacz, nie zauważyłem tego. Poszukam problemu.
P-27845
Tymek
Temat założony przez niniejszego użytkownika
» 2011-02-05 18:01:13
C/C++
#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
P-27846
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?

C/C++
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
C/C++
plik << nazwisko;
zamiast
C/C++
plik >> nazwisko;

niby jak zmienię z plik>>nazwisko , na cin>>nazwisko to działa
jeśli używasz
C/C++
plik << nazwisko;
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:
C/C++
cin >> nazwisko;
plik << nazwisko;
P-27847
Tymek
Temat założony przez niniejszego użytkownika
» 2011-02-05 18:21:06
C/C++
#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
C/C++
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.
P-27850
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

C/C++
plik << nazwisko;
zapisuje tylko zmienną do pliku, nic nie wczytuje ze standardowego wejścia
P-27852
« 1 » 2
  Strona 1 z 2 Następna strona