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

problem z zapisem

Ostatnio zmodyfikowano 2012-01-08 21:51
Autor Wiadomość
El-Pablo
Temat założony przez niniejszego użytkownika
problem z zapisem
» 2012-01-08 20:44:08
Hej czy mógłby ktoś sprawdzić ten kod u siebie na kompie, program kompiluje sie i odpala ale gdy tylko chce zapisac do pliku wywala ze "Nie udało sie otworzyc pliku", przed intalacja win 7 działało chyba dobrze lecz wydaje mi sie ze nie powinno miec to nic wspólnego ze zmianą systemu o to kod:

C/C++
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;
struct osoba
{
    string imie;
    string nazwisko;
    int telefon;
    osoba * next;
};
osoba * poczatek = NULL;
const char * nazwa_pliku;
void dodaj()
{
    osoba * nowa = new osoba;
    cout << "Wpisz imie ";
    cin >> nowa->imie;
    cout << "Wpisz nazwisko ";
    cin >> nowa->nazwisko;
    cout << "Wpisz telefon ";
    cin >> nowa->telefon;
    nowa->next = NULL;
    if( poczatek == NULL )
    {
        poczatek = nowa;
    } else
    {
        osoba * szukaj = poczatek;
        while( szukaj->next != NULL )
        {
            szukaj = szukaj->next;
        }
        szukaj->next = nowa;
    }
}
void wyswietl()
{
    if( poczatek != NULL )
    {
        osoba * pokaz = poczatek;
        while( pokaz->next != NULL )
        {
            cout << endl << pokaz->imie;
            cout << endl << pokaz->nazwisko;
            cout << endl << pokaz->telefon << endl;
            pokaz = pokaz->next;
        }
        cout << endl << pokaz->imie;
        cout << endl << pokaz->nazwisko;
        cout << endl << pokaz->telefon << endl;
    }
}
void szukaj()
{
    int a;
    cout << " Podaj numer szukanego telefonu : ";
    cin >> a;
    osoba * szuk = poczatek;
    while( szuk->next != NULL )
    {
        if( szuk->telefon == a )
        {
            break;
        }
        szuk = szuk->next;
    }
    if( szuk->telefon == a )
    {
        cout << endl << szuk->imie;
        cout << endl << szuk->nazwisko;
        cout << endl << szuk->telefon << endl;
    }
}
void zapisz()
{
   
    fstream plik( nazwa_pliku, fstream::out | fstream::app );
    if( plik.is_open() )
    {
        if( poczatek != NULL )
        {
            osoba * pokaz = poczatek;
            while( pokaz->next != NULL )
            {
                plik << pokaz->imie;
                plik << endl << pokaz->nazwisko;
                plik << endl << pokaz->telefon << endl;
                pokaz = pokaz->next;
            }
            plik << pokaz->imie;
            plik << endl << pokaz->nazwisko;
            plik << endl << pokaz->telefon << endl;
        }
        plik.close();
    }
    else cout << "Nie udalo sie otworzyc pliku";
    // int liczba = atoi(slowo.c_str());
}
void wczytaj()
{
    string line;
    fstream plik;
    plik.open( nazwa_pliku, fstream::in );
    if( plik.is_open() )
    {
        getline( plik, line );
        while( !plik.eof() )
        {
            osoba * nowa = new osoba;
            nowa->imie = line;
            getline( plik, line );
            nowa->nazwisko = line;
            getline( plik, line );
            nowa->telefon = atoi( line.c_str() );
            getline( plik, line );
            nowa->next = NULL;
            if( poczatek == NULL )
            {
                poczatek = nowa;
            } else
            {
                osoba * szukaj = poczatek;
                while( szukaj->next != NULL )
                {
                    szukaj = szukaj->next;
                }
                szukaj->next = nowa;
            }
        }
        plik.close();
    }
}
int main( int argc, char * argv[] )
{
    nazwa_pliku = argv[ 1 ];
    float pi = 3.14;
    cout << "Pi = " << pi << " adres = " << & pi << endl;
    float * addr;
    addr = & pi;
    cout << "adres = " << addr << " wartosc = " << * addr << endl;
    int a;
    while( a != 6 )
    {
        cout << "Wybierz : \n1 - dodaj osobe \n2 - wyswietl dane \n3 - wyszukaj telefon \n4 - zapisz \n5 - wczytaj \n6 - koniec\n";
        cin >> a;
        switch( a )
        {
        case 1:
            dodaj();
            break;
        case 2:
            wyswietl();
            break;
        case 3:
            szukaj();
            break;
        case 4:
            zapisz();
            break;
        case 5:
            wczytaj();
            break;
        }
    }
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-47655
malan
» 2012-01-08 20:47:22
Uruchom z prawami administratora.
P-47656
DejaVu
» 2012-01-08 20:48:20
A czy w ogóle wiesz jak uruchomić ten program poprawnie?
P-47657
El-Pablo
Temat założony przez niniejszego użytkownika
» 2012-01-08 21:27:51
no uruchamiam dev c++ jako admin klikam kompiluj i uruchom i heja, pod win xp z tego co pamietam smigał a tu lipa :(
P-47662
CodeMeister
» 2012-01-08 21:28:34
A tam nie mialo byc ios::app, ios::out itd.?
P-47663
El-Pablo
Temat założony przez niniejszego użytkownika
» 2012-01-08 21:32:28
koles na zajeciach mówił ze fstream::out | fstream::app... i przedtem działało, zreszta z ios::app, ios::ou tez wywala ze nie udało sie otworzyc pliku jak chce zapisac do pliku dane
P-47664
CodeMeister
» 2012-01-08 21:34:37
Tworzysz najpierw plik?
P-47665
pekfos
» 2012-01-08 21:36:14
kompiluj i uruchom
I jak ma niby działać?

cmd i:
program plik


koles na zajeciach mówił ze fstream::out | fstream::app... i przedtem działało, zreszta z ios::app, ios::ou tez wywala ze nie udało sie otworzyc pliku jak chce zapisac do pliku dane
fstream::out i ios::out to to samo, itd. fstream dziedziczy te flagi po ios. Na ogół pisze się ios::flaga bo tak jest krócej :P
P-47666
« 1 » 2
  Strona 1 z 2 Następna strona