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

Gdzie jest błąd - strumień na plik.

Ostatnio zmodyfikowano 2009-05-02 19:39
Autor Wiadomość
GoldWolf
Temat założony przez niniejszego użytkownika
Gdzie jest błąd - strumień na plik.
» 2009-05-02 18:49:24
Taki kodzik:
C/C++
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>

void testuj_strumien() {
    using namespace std;
    ofstream strumien;
    ifstream strumien1;
    string bufor, bufor1;
    int liczba;
    char * znak;
   
    strumien1.open( "pomoc.txt", ios::in );
    if( strumien1.is_open() ) {
        while( !strumien1.eof() ) {
            //pobieranie linijki z pliku
            getline( strumien1, bufor1 );
            //zamiana string na int
            sscanf( bufor1.c_str(), "%d", & liczba );
            //dodanie 1 do int i zamiana na string
            cout << "Co tam w buf:\n" << bufor1
            << endl;
            ( ++liczba );
            itoa( liczba, znak, 10 );
            bufor1 = znak;
            //sprawdza czy w strumieniu
            if( strumien1.peek() != - 1 )
                 bufor1 += "\n";
           
            bufor += bufor1;
            if( !strumien1.peek() == EOF )
            if( strumien1.peek() == ' ' ) {
                bufor += " \n";
                getline( strumien1, bufor1 );
                bufor1.clear();
            }
        }
    }
    strumien1.close();
   
    cout << "\n";
    //     cout << bufor << "\n\n";
    strumien.open( "pomoc1.txt", ios::out );
    if( strumien.is_open() ) {
        strumien << bufor;
        bufor.clear();
    }
    strumien.close();
    strumien.clear();
}
void testuj1_strumien() {
    using namespace std;
    fstream strumien;
    string bufor, bufor1;
    int liczba;
    char * znak;
   
   
    strumien.open( "pomoc1.txt", ios::in | ios::out );
    if( strumien.is_open() ) {
        while( !strumien.eof() ) {
            //pobieranie linijki z pliku
            getline( strumien, bufor1 );
            //zamiana string na int
            sscanf( bufor1.c_str(), "%d", & liczba );
            //dodanie 1 do int i zamiana na string
            cout << "Co tam w buf:\n" << bufor1
            << endl;
            ( ++liczba );
            itoa( liczba, znak, 10 );
            bufor1 = znak;
            //sprawdza czy w strumieniu
            if( strumien.peek() != - 1 )
                 bufor1 += "\n";
           
            bufor += bufor1;
            if( !strumien.peek() == EOF )
            if( strumien.peek() == ' ' ) {
                bufor += " \n";
                getline( strumien, bufor1 );
                bufor1.clear();
            }
        }
    }
    cout << "\n\n" << bufor << endl;
    strumien.clear();
    strumien.seekg( 0 );
    strumien << bufor;
    //    strumien << "\r";
    strumien.close();
    strumien.clear();
    bufor.clear();
}

int main()
{
    testuj_strumien();
    testuj1_strumien();
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
W pliku tekstowym jest coś takiego:
5
6
7
7
4
5
3

2
4
5
3
1
3
5
P-6354
DejaVu
» 2009-05-02 19:21:44
Przydałby się jakiś słowno muzyczny opis co konkretnie nie działa.
P-6363
GoldWolf
Temat założony przez niniejszego użytkownika
» 2009-05-02 19:27:55
Gdybym to wiedział to bym powiedział jejejeeeeeeee!

Utwórz plik pomoc.txt wrzuć co jest wyżej, skopiuj do odpowiedniego folderu skompiluj i zobacz. Kompilator milczy. Program się wywala. Jak zahaszujesz jedną z funkcji będzie git(ale oczywiście nie o to chodzi).
P-6367
DejaVu
» 2009-05-02 19:34:55
Źródło błędu:
char * znak;
Rozwiązanie problemu:
char znak[ 20 ];
P-6373
GoldWolf
Temat założony przez niniejszego użytkownika
» 2009-05-02 19:40:36
Nie wpadłbym na to.

To jest tak jak się z gotowych rozwiązań korzysta.

Zrób z tego char znak[12];A ja zrobiłem znak[2] i jest ok.
P-6374
manfred
» 2009-05-02 19:39:08
char *znak;
[...]
itoa(liczba, znak, 10);
Zdziwiłbym się gdyby to się NIE wywalało. Można wiedzieć, na co wskazuje znak? Zrób z tego char znak[12];
@up: można wiedzieć, czemu 20? 10 cyfr + znak + NULL to 12.
P-18864
« 1 »
  Strona 1 z 1