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

[C++] Konwersja EXE do char[].

Ostatnio zmodyfikowano 2015-08-04 21:08
Autor Wiadomość
C-Objective
Temat założony przez niniejszego użytkownika
[C++] Konwersja EXE do char[].
» 2015-08-04 10:58:52
Program konwertuje plik binarny do char[].
Program się kompiluje, jednak nie działa (program blabla.exe przestał działać).
Programuję pod Windows, 64 bit. Kod:
C/C++
#include<iostream>
#include<fstream>
using namespace std;
int main() {
    ifstream infile;
    infile.open( "source.txt", ios::binary | ios::in );
    ofstream outfile;
    outfile.open( "to.txt", ios::binary | ios::out );
    cout << "1. done";
    int buffer[ 1024 * 1024 ];
    int flen = 0;
    while( infile.read(( char * ) & buffer, sizeof( buffer ) ) ) {
        flen++;
    }
    outfile << "char array[] = {" << endl;
    for( int i = 0; i < flen; i++ ) {
        outfile << buffer[ i ] << ", ";
    }
    outfile << "};" << endl;
    infile.close();
    outfile.close();
    return 0;
}
@edit: "1. done" się nie wyświetla...
P-135674
DejaVu
» 2015-08-04 11:00:54
jeżeli chcesz czytać dane binarnie to musisz używać metod read/write, a nie operatorów <</>>.
P-135675
C-Objective
Temat założony przez niniejszego użytkownika
» 2015-08-04 11:03:15
C/C++
while( infile.read(( char * ) & buffer, sizeof( buffer ) ) ) {
    flen++;
}
Czytam za pomocą read. Pisanie też zamienić na write? Problem jest jeszcze taki że napis "1. done" się nie wyświetla a powinien.
P-135676
DejaVu
» 2015-08-04 11:59:21
to dopisz <<endl na końcu.
P-135678
C-Objective
Temat założony przez niniejszego użytkownika
» 2015-08-04 13:16:58
dalej nie działa. Chodzi mi głównie o takie coś:
plik.txt:

MZ       ˙˙  ¸       @                                   €   ş ´ Í!¸LÍ!This program cannot be run in DOS mode.
itd..
plik.cpp:
C/C++
char plik[] = { 0x78, 0x6A,...};
Bo chcę zrobić plik w pliku. Notatnikiem przecież nie skopiuję i nie
wepchnę w stringa... Przy debugowaniu mam 2x Stack overflow. @3 edit: Alueril chyba napisał coś
podobnego.
P-135679
maly
» 2015-08-04 13:45:51
int buffer[ 1024 * 1024 ];

Jeśli chcesz mieć tablicę o dużych rozmiarach alokuj ją dynamicznie(new) a najlepiej użyj
std::vector
.
P-135683
C-Objective
Temat założony przez niniejszego użytkownika
» 2015-08-04 14:12:03
nawet jeśli tam daję 10 to dalej mi crashuje ( plik z wejściem zawiera 7 znaków).
P-135684
pekfos
» 2015-08-04 16:18:59
plik.cpp:
C/C++
char plik[] = { 0x78, 0x6A,...};
Bo chcę zrobić plik w pliku. Notatnikiem przecież nie skopiuję i nie
wepchnę w stringa...
Program HxD pozwala zapisać dowolny plik w postaci przyjaznej kodzie C.
P-135690
« 1 » 2
  Strona 1 z 2 Następna strona