Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Datei in Programm fest einkompilieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.07.2007
    Beiträge
    38

    Datei in Programm fest einkompilieren

    Hallo,

    ich habe ein kleines Tool geschrieben, dass aus einer Datei (Inhalt: Tabelle, Felder mit ";" getrennt) einen passenden Eintrag sucht und dann dementsprechend zugehörige Informationen ausgibt.
    Nun habe ich mich gefragt, ob es möglich wäre, diese Datei in mein Programm fest einzukompilieren - damit würde ich das Problem umgehen, dass das Programm in einem x-beliebigen Verzeichnis ausgeführt werden kann und die Daten-Datei nicht an einem bestimmten Ort (z.B. /etc) liegen muss.
    Eine Makefile habe ich schon, evtl kann man das Einfügen in den Quellcode ja dort machen, und falls das geht, wäre noch die Frage, wie dann der Code aussehen müsste, um die "virtuelle" Datei zu öffnen.

    Geht sowas und wenn ja - wie?

    Peter

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Das File als String speichern? Und dann direkt von da verwenden? Oder einfach neu erzeugen (aus dem String heraus), wenn noch nicht vorhanden?

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.12.2005
    Beiträge
    16
    Erzeugen eines Object Files aus der rohen Datei (example.bin):

    Code:
    $ ld -r -b binary -o example.o example.bin
    Linken der Datei mit anderen Quell- bzw. Objektdateien:

    Code:
    $ gcc -o example example.c example.o
    Im Code folgende Symbole deklarieren:

    Code:
    extern char _binary_example_bin_start[];
    extern char _binary_example_bin_end[];
    Damit kann dann auf die Daten der Eingabedatei "example.bin" zugegriffen werden.

  4. #4
    Registrierter Benutzer
    Registriert seit
    17.07.2007
    Beiträge
    38
    Funktioniert soweit ganz gut, nur wie stelle ich es jetzt noch am besten an, aus dem String (die Datei ist jetzt ja ein String so wie ich das sehe) zeilenweise zu lesen?
    Ich habe ich meinem Quellcode momentan eine while-Schleife mit fgets drin, und da es sich um eine Tabelle handelt, ist das auch echt praktisch so...

    Gibt es da irgendwas analog zu fgets oder muss ich basteln? Und wenn ich bastle, z.B. mit einer for-Schleife Zeichenweise lesen und bei \n alles zuvor gelesene in einen String packen (analog fgets), woher kriege ich den Wert um der Schleife als Maximalwert zu übergeben?

    Also:
    for (i=0; i<=*???*; i++)

    Weil irgendwo muss ich mit dem Lesen ja aufhören...

  5. #5
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,

    schau dir mal die Funktionen strtok bzw. strsep an. Wahrscheinlich musst du vorher den String mit strdupa duplizieren.

    Gruß, Florian
    Geändert von ContainerDriver (09-07-2008 um 10:53 Uhr)
    Ein gebrechlich Wesen ist der X-Server.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •