Brauche bitte Hilfe beim erstellen einer Funktion

  • Hallo Leute,
    Ich habe eine ganz bestimmte Frage und hoffe ihr könnt mir weiterhelfen:
    Ich habe ein Wörterbuch programmiert wobei das nicht weiter wichtig ist was ich programmiert habe, sondern ich möchte das jetzt etwas verschönern und zwar mit Funktionen. Nur scheitere ich bei diesem leider. Ich hoffe ihr könnt mir weiterhelfen.

    Das Programm funktioniert mit meinem Compiler so wie es geschrieben ist, nur wenn ich es auf Funktionen ändern möchte nicht. Ich poste nicht das ganze Programm, sondern nur den Abschnitt, welchen ich behandeln möchte. (In diesem Abschnitt geht es eigentlich nur darum, alle Wörter, welche in einem anderen Abschnitt des Programms eingetragen worden sind, wieder auszugeben und zwar, entweder auf deutsch oder english.)
    Ich weiss es schaut nach etwas zu viel Code für ein Forum aus aber mir geht es im Grunde genommen ausschließlich um die Parameter und die zu übergebenen Argumente bezogen auf die Funktion. Wenn ich das GANZE Programm so aufrufe überspringt es mir diesen Teil und wird nicht ausgeführt. Ich hoffe ihr könnt mir weiterhelfen und danke im voraus.

    So sieht meine derzeitige Struktur aus:

    Code
    struct leo 
    { 
        char *deutsch; 
        char *english; 
    }*buch;



    So hatte ich den zu behandelnden Abschnitt anfangs:



    Und so dachte ich mir könnte ich es umschreiben:

    Einmal editiert, zuletzt von flo2020 (13. Februar 2011 um 17:35)

  • Wenn ich das GANZE Programm so aufrufe überspringt es mir diesen Teil und wird nicht ausgeführt.

    Welchen Teil überpringt er? Die Funktion look_word? Hast du sie in der Funktion main() auch aufgerufen?

    Da wo vorher der Codeabschnitt stand, da gehört jetzt ein Funktionsaufruf hin:

    Code
    look_word(buch, eintraege, which_language);

    Du müsstest dich allerdings zuerst festlegen was genau deine Funktion alles machen soll. Man "verschönert" Programme normalerweise nicht, wenn man willkürlich Code in Funktionen packt, sondern man sollte sich überlegen was die Ein- und Ausgabewerte der Funktion sein sollen und was dazwischen passiert.

    In deinem Fall ist es z.B. unlogisch, dass hier "langu" übergeben wird, du aber trotzdem in der Funktion diesen Parameter einliest. Entweder du liest vor dem Aufruf ein, und übergibst den Wert, oder die Funktion liest selber ein. Aber beides zusammen verwirrt eher.

  • @ Dimitrij. Ja das weiss ich schon. Das habe ich in einem anderen Abschnitt behandelt, in welchem Einträge gelöscht werden sollen. Und die Einträge, die gelöscht sind habe ich mit "--" inistialisiert. Mir geht es wirklich nur um die Parameter.

  • Danke für die schnellen Antworten. Also bei mir schaut das nun so aus. Der Fehler ist, das es jeden einzelnen Abschnitt normal ausführt, außer den Teil, den ich in eine Funktion verpackt habe. Das ganze läuft in einer While(1). (ich möchte nicht wirklich das Programm verschönern, ich muss nur etwas üben mit Funktionen zu arbeiten.)

    Im menü von dem ganzen wörter buch steht was aber nicht weiter wichtig sein sollte für die Fehlerbehebung:

    Code
    printf("1... Add word\n");
        printf("2... Look up word\n");
        printf("3... List all words of a language\n");
        printf("4... Delete word\n");
        printf("5... Exit\n\n");



    Das ist meine umgeänderte Funktion:



    Und so wird sie in der main aufgerufen:

    Einmal editiert, zuletzt von flo2020 (13. Februar 2011 um 18:47)

  • Es müsste eigentlich so passen.

    Bist du sicher, dass er zwar den If-Block, nicht aber die Funktion ausführt? Siehst du das in der Ausgabe oder springt nur der Debugger nicht in die Funktion? Beim Debuggen gibt es die Kommandos "step into" und "step over". Letzteres führt Unterfunktionen in einem Schritt aus. Vielleicht ist das ja das Problem.

  • ok jetzt stimmt es mit den Übergaben. Hab Das programm nochmal neu gestartet. Jetzt funktioniert es komischerweise. Danke für alle Antworten !! und für die Hilfe !!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!