Arbeiten mit mehreren Dateien



  • Hi,

    wie kann ich in C, nachdem ich in einem Programm mehrere Dateien angelegt und in diesen Funktionen definiert habe, in anderen Dateien mit den Rückgabewerten (z.b. ein String oder eine Integerzahl) weiterarbeiten? Passende Header-Dateien wurden includiert.



  • Höh?? 😕 😕

    Meinst du das??

    #include "cool_header.h"
    
    //...
    int val = myCoolFunction();
    //...
    


  • das programm handelt von codierung (zyklische ersetzung und verschiebung).
    - in main kann der benutzer auswählen, was er machen will (aus obigem).
    - in der Datei "Texteingabe.c" wird eben ein text eingelesen und sonderzeichen rausgelöscht. // funktioniert
    - in der Datei "Key_Ersetzung.c" wird, nachdem die Datei "Verschluesselung_Entschluesselung.c" aufgerufen wurde (auswahl zwischen beidem), ein Schluessel verlangt (Integer) // funktioniert
    - in der Datei "Ersetzung.c" soll der Text aus "Texteingabe.c" aufgerufen werden und die einzelnen stellen um 'Key'-Stellen (aus "Key_Ersetzung.c") verschoben werden // funktioniert NICHT
    es wird nicht der text aus der anderen datei aufgerufen und der key auch nicht.



  • Weiß Ersetzung.c dass es Texteingabe.c und Key_Ersetzung.c gibt? Gibt es Header zu den entsprechenden .c Files? Includierst du sie? Bitte zeig mal ein wenig Code + Fehlermeldung.



  • ja weiß es, Fehlermeldung kommt keine, ausser dass manche variablen vorher nicht deklariert wurden...

    #include <stdio.h>
    #include <conio.h>
    #include "Main.h"
    #include "Ersetzung.h"
    #include "Key_Ersetzung.h"
    #include "Texteingabe.h"
    #include "Ver_Ent.h"
    
    char Ersetzung (char text_code[151])
      {
    	char text_neu[151], text_konv[151];
    	int key, i;
    	printf("%s", text_konv);
    
    	for (i = 0; text_konv[i] != '\0'; i++)
    	  {
    		text_neu[i] = text_konv[i] + key;
    		text_code[i] = text_neu[i];
    	  }
    	return text_code[151];
      }
    


  • text_neu und text_konv sind lokale Arrays - d.h. sie enthalten am Anfang der Funktion nur Datenmüll. Um damit sinnvoll arbeiten zu können, mußt du sie mit Werten füllen, z.B. mit "Eingabe(text_konv);"

    (btw, der Wert 'text_code[151]', den du zurückgeben willst, liegt außerhalb des übergebenen Array-Bereiches)



  • wird, wenn ich "Eingabe(text_konv)" aufruf, dann nich die komplette datei "Eingabe" nochmal aufgerufen? das brauch ich ja nich, will ja nich 2mal den text eingeben lassen.

    EDIT: hab etz mal das komplette dingens hochgeladen, vielleicht könnte sichs mal einer angucken und mir sagen, woran es liegen könnt:
    http://www.letsgetvip.de/Kryptologie.zip



  • MastaZulu schrieb:

    wird, wenn ich "Eingabe(text_konv)" aufruf, dann nich die komplette datei "Eingabe" nochmal aufgerufen? das brauch ich ja nich, will ja nich 2mal den text eingeben lassen.

    Das mit dem Eingabe() war ein Beispiel - du mußt auf jeden Fall irgendwie dafür sorgen, daß in deinen Char-Arrays vernünftige Werte drinstehen.

    ich würde z.B. die Werte als Parameter übergeben:

    int Ersetzung(char* ein, char* aus, char key)
    {
      for(int i=0;ein[i]!='\0';++i)
        aus[i]=ein[i]+key;
      return i;
    }
    


  • MastaZulu schrieb:

    EDIT: hab etz mal das komplette dingens hochgeladen, vielleicht könnte sichs mal einer angucken und mir sagen, woran es liegen könnt:
    http://www.letsgetvip.de/Kryptologie.zip

    Also gut, es läuft uns mir ist folgendes aufgefallen:
    1. main.c braucht keinen Header, es ist klar was gemeint ist. Diese Datei muss auch nirgends inkludiert werden.
    2. Include Guards sind gut, aber es heißt eigentlich weniger #ifndef HEADER_C sondern #ifndef HEADER_H , eher kosmetische Geschichte
    3. Hör auf fflush(stdin) zu schreiben! Warum? Hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39349.html
    Abhilfe schafft ein while(getchar()!='\n');
    4. Vermeide conio.h, da dies Compilerabhänig ist, getchar(); aus der stdlib.h tut's auch
    5. Entscheide dich, ob du Werte mittels Return Wert oder über Pointer zurückgibst (siehe auch CStolls Post), nicht beides gleichzeitig.
    6. Schreib Kommentare zu deinem Code, ich hab in 10 Dateien keinen einzigen Kommentar gefunden, hat mir beim Verständnis nicht gerade geholfen
    7. Lies ein gutes Buch/Tutorial zu C: http://www.pronix.de/pronix-4.html
    8. Man liest eigentlich Strings mit fgets(str, anzahl, stdin); ein, nicht über eine sinnlose while-Schleife.

    So, und wo soll ich das Zip - File nun hinschicken? (Keine Angst, ich schick dir keine Viren/Würmer/was das Web sonst noch bietet).



  • kommentare wollt ich erst im nachhinein einfügen.
    #ifndef TEXT_C hat unser Prof so geschrieben.
    main hab ich nur testweise per headerdatei includiert

    schreib mir doch ne mail an masta.zulu@gmx.net



  • Müsstest die mail haben



  • lol sorry, masta.zulu@gmx.de 🙂 eieiei, das is mir auch noch nich passiert 🙂

    aber trotzdem mal danke im voraus


Anmelden zum Antworten