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

Zapisywanie tekstu do pliku

Ostatnio zmodyfikowano 2009-06-19 20:48
Autor Wiadomość
pekfos
» 2009-06-15 14:42:55
.clear() czyści flagi po czym można ponownie otworzyć jakiś plik
P-7727
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 ;]

C/C++
#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() ); //tu pokazuje blad
            }
            plik.close();
        }
    }
    getchar();
    return( 0 );
}
P-7742
DejaVu
» 2009-06-16 01:41:00
C/C++
///(...)
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().
P-7743
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 ;/
P-7744
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:)
P-7753
DejaVu
» 2009-06-16 14:28:51
Już napisałem wcześniej przyczynę.
C/C++
int b;
//(...)
string zdanie[ b ];
P-7754
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)

C/C++
#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 );
}
P-7769
DejaVu
» 2009-06-16 21:39:34
Przeczytaj tego posta dokładnie http://archiwum.ddt.pl/?GroupId=8484 :) bo na razie tak na chybił trafił szukasz rozwiązania :)
P-7771
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona