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

Program się wywala przy binary write

Ostatnio zmodyfikowano 2011-03-27 21:06
Autor Wiadomość
MrOsamaful
Temat założony przez niniejszego użytkownika
Program się wywala przy binary write
» 2011-03-26 20:53:43
Pomóżcie. Nie jestem zbyt dobre w pracy z plikami binarnymi dlatego, jak napotkałem ten problem to za chiny nie mogę sobie z nim sam poradzić...

input:

PUSHDW

C/C++
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
#include <vector>
#include <string>
using namespace std;


const char opcodes[] = { 0x1, 0x2, 0x3, 0x4 };
char * text;
vector < char *> lines;
int pos = 0;
int getSize( ifstream & myfile )
{
    int begin, end;
    begin = myfile.tellg();
    myfile.seekg( 0, ios::end );
    end = myfile.tellg();
    myfile.seekg( 0, ios::beg );
    return( end - begin );
}

int main()
{
    char plikWejsciowy[ 256 ];
    char plikWyjsciowy[ 256 ];
    char * tmpLine;
   
    cout << "Podaj nazwe pliku wejsciowego: ";
    cin >> plikWejsciowy;
    cout << "Podaj nazwe pliku wyjsciowego: ";
    cin >> plikWyjsciowy;
    ifstream input;
    input.open( plikWejsciowy );
    int size = getSize( input );
    // Tablica na zawartosc pliku
    text = new char[ size ];
   
    // Czyta plik;
    input.read( text, size );
   
    cout << size << endl;
    cout << text << endl;
   
    // Wczytuje plik
    tmpLine = strtok( text, " \n" );
    while( tmpLine != NULL )
    {
        printf( "%s\n", tmpLine );
        lines.push_back( tmpLine );
        tmpLine = strtok( NULL, " \n" );
    }
    cout << endl << "Plik wczytany" << endl;
    // Ukonczono wczytywanie pliku
    // Zamian na bytecode
   
    ofstream output;
    output.open( plikWyjsciowy, ios::binary );
    for( int i = 0; i < size; i++ )
    {
       
        if( !strcmp( "PUSHDW", lines[ i ] ) )
        {
            cout << "Znaleziono PUSHDW na linii: " << i << endl;
            // TU JEST PROBLEM
            output.write(( const char * ) opcodes[ 2 ], 1 );
        }
       
    }
   
    return 0;
}
P-29796
malan
» 2011-03-26 21:31:27
W ogóle nie sprawdzasz, czy plik został poprawnie otwarty.
P-29797
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2011-03-26 21:55:18
Ale plik wejściowy czy wyjściowy?
P-29798
malan
» 2011-03-26 22:00:46
Oba.
P-29799
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2011-03-26 22:10:55
Wejsciowy jest dobry na 100%, do wyjściowego nic nie wpisuj ale go tworzy.
P-29800
malan
» 2011-03-26 23:03:04
Nie rozumiesz chyba.
C/C++
std::ifstream input( plikWejsciowy );
if( input.fail() )
     return 1;
//...
std::ofstream output( plikWyjsciowy, ios::binary );
if( output.fail() )
     return 1;
To mam na myśli.
P-29803
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2011-03-27 00:13:38
Wiem co masz na myśli? Tylko jak to ma się do mojego problemu? Wiem w czym jest błąd tylko nie wiem jak go rozwiązać. Bez problemu wczytuje plik do pamięci tylko potem nie może go zapisać.
P-29808
malan
» 2011-03-27 00:41:59
Może spróbuj zamienić:
C/C++
const char opcodes[] = { 0x1, 0x2, 0x3, 0x4 };
...na:
C/C++
const char opcodes[] = { '1', '2', '3', '4' );

/edit (by malan):
Nie wiem, o czym myślałem jak pisałem tego posta......
P-29812
« 1 » 2
  Strona 1 z 2 Następna strona