Programm received SIGEGV, Segment fault



  • Hi zusammen!

    Das unten stehende Programm konnte ich ohne Probleme compilieren.
    Beim ausführen allerdings stürzt das Programm ab. Beim Debuggen wird mir der Fehler (Titel) als Popup. Außerdem wird beim CPU Fenster (Dev-C++ 5.6.3) die Ablaufvefolgung die Funktion "FuncEncrypt.c" (Zeile X:

    X:

    int FuncEncrypt(char FuncEncryptCArray[MaxIndexA][MaxIndexA]) {
    

    angezeigt.

    Es liegt wohl daran das das Progamm auf einen geschützen Bereich zugreifen will -> Absturz.

    Da ich erst in die Programmiersprach C eingestiegen bin, frage ich mich, wie ich dies umgehen kann.

    main.c

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define MaxIndexA 1000
    #define MaxIndexB 100
    #define MaxIndexC 10
    
    #define SHIFT 256
    
    #include "c\FuncCReadFile.c"
    #include "c\FuncInputFileName.c"
    #include "c\FuncCrypt.c"
    #include "c\FuncEncrypt.c"
    #include "c\FuncCRandomPassword.c"
    
    int main() {
    
        char InputChoice[MaxIndexA];
        /*
        name of the files
        */
    	char InputFileName[MaxIndexA];
        char OutputFileName[MaxIndexA];
    
        char test[MaxIndexA][MaxIndexA];
    
    	printf("%s","   Input File   \n");
    
        FuncInputFileName(InputFileName);
    
        printf("Input File Name: ");
        printf("%s", InputFileName);
        printf("\n");
    
        printf("%s","   Output File   \n");
    
        FuncInputFileName(OutputFileName);
    
        printf("Output File Name: ");
        printf("%s", OutputFileName);
        printf("\n");
    
        printf("\n   Choice   \n");
        printf("1   Crypt\n");
        printf("2   Encrypt\n");
    
        (Ab hier liegt der Fehler)
        test[0][0]='g';
    
        FuncEncrypt(test);
    
        return 0;
    
    }
    

    FuncEncrypt.c

    /*
    C Program
    Encrypt Data
    */
    
    int FuncEncrypt(char FuncEncryptCArray[MaxIndexA][MaxIndexA]) {
    
        char FuncEncryptA[MaxIndexA][MaxIndexA];
    
        char FuncEncryptB[MaxIndexA][MaxIndexA];
    
        char FuncEncryptC[MaxIndexA][MaxIndexA];
    
    }
    

    P.S. Auch bei veränderten Funktionsinhalt von FuncEncrypt (z.B. andere Variable bzw. Werte ihnen zuweisen etc.) liegt der Fehler immer noch vor.



  • Leider zeigst Du uns nicht die entscheidenden Punkte Deines Programms.

    Hauptsächlich sehe ich Ausgaben mit printf() .

    FuncEncrypt() soll genau was machen? Die macht nämlich genau nix!

    Und das mit dem #include von Sourcecode gib wieder auf: das macht niemand so. Du solltest da keine Ausnahme bilden.



  • Ich schätze, Dein Stack ist zu klein. Setz mal testweise MaxIndexA von 1000 auf 10 runter.

    Btw.: Dein Programm ist völlig daneben, aber das werden Dir wahrscheinlich noch andere etwas genauer auseinanderpflücken ...



  • Ich würde mal auf einen Stackoverflow tippen, da hier mehr als 1MB (= Standardwert der meisten Compiler) reserviert wird.

    PS. es gibt auch die Funktion puts:

    puts("   Input File");
    

    Edit: boah, bin ich langsam...



  • Danke für hilfreichen Tipps / Antworten!

    Da ich neu in der Programmiersprach bin, war das mit dem Zerflücken des Programms schon vorprogrammiert.

    Habt ihr vielleicht einpaar Tipps wie ich den Stackoverflow zukünftig (vllt auch bei größeren Array) verhindern könnte? (-> malloc?)

    Außerdem wäre es interessant, wie ich sauberen Code schreibe, der beim nächsten Mal nicht zerfückt wird. (bei kleineren und größeren Programmen bzw bei einer oder >1 Person)

    Danke


Log in to reply