Ich habe eine Elf-Datei, die Beispiel aufgerufen. Ich schrieb folgenden Code, der den Inhalt der Beispieldatei im binären Modus liest und dann wollte ich ihren Inhalt in einer anderen Datei namens example.binary speichern. Aber wenn ich das folgende Programm ausführe, zeigt es mir einen Segmentierungsfehler an. Was ist falsch an diesem Programm? Ich kann meinen Fehler nicht herausfinden.Lesen von 2 Byte zu einer Zeit aus einer Binärdatei
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// typedef macro
typedef char* __string;
//Function prototypes
void readFileToMachine(__string arg_path);
int main(int argc, char *argv[]) {
__string pathBinaryFile;
if(argc != 2){
printf("Usage : ./program file.\n");
exit(1);
}
pathBinaryFile = argv[1];
readFileToMachine(pathBinaryFile);
return EXIT_SUCCESS;
}
void readFileToMachine(__string arg_path){
int ch;
__string pathInputFile = arg_path;
__string pathOutputFile = strcat(pathInputFile, ".binary");
FILE *inputFile = fopen(pathInputFile, "rb");
FILE *outputFile = fopen(pathOutputFile, "wb");
ch = getc(inputFile);
while (ch != EOF){
fprintf(outputFile, "%x" , ch);
ch = getc(inputFile);
}
fclose(inputFile);
fclose(outputFile);
}
'strcat typedef (pathInputFile, ".binary"); 'überschreibt Speicher, der von Ihrem Programm nicht zugewiesen wurde. –
Also, wie kann ich es reparieren? – user3646905
@ user3646905 Lesen Sie ein gutes C-Lehrbuch oder folgen Sie einem Tutorial. Erfahren Sie mehr über Zeiger. –