C: ini File schreiben unter Linux.

Direkte Linux-Programmierung, POSIX
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

C: ini File schreiben unter Linux.

Beitrag von naums » Mo Sep 06, 2010 6:59 am

Ich will wieder mal an meinem INIMaker rumbasteln, diesmal soll das Ding auch auf Linux laufen, erstmal ohne Oberfläche, sondern es soll über Parameter steuerbar sein. Fürs erste jedenfalls. Zum Problem: Ich will ja mit meinem INIMaker eine .ini Datei erstellen, füllen, und auch wieder Daten löschen können. Eine ini Datei ist ja ungefähr so aufgebaut:

Code: Alles auswählen

[INIMAKER]
width=255
height=233
titel=INIMAKER

[Datensatz1]
attr1=wert1
attr2=wert2 
ich denke das Prinzip ist klar. Also habe ich mir als erstes gedacht, wie eine INIErkennung unter PHP laufen könnte. Ich bevorzuge den explode() befehl. also $teilstring=explode ("[", $komplettstring); header=explode ("]", $teilstring[1]); Jetzt müsste noch unterschieden werden. Da ja das erste Zeichen immer ein [ ist und somit $teilstring[1] im Beispiel folgenden Text hätte:

Code: Alles auswählen

width=255
height=233
titel=INIMAKER
müsste man unterscheiden ob es sich um eine Überschrift, oder um die Wertzuweisungen handelt. Letzteres muss wieder geteilt werden in Attribut und Attributwert, durch das "=" geteilt. Gibt es einen ähnlichen BEfehl wie explode in C? (C++)

Zum Schreiben einer INI fällt mir nur folgendes ein: Man muss die richtige Überschrift finden, wo der Wert reinmuss, man muss das richtige Attribut finden, oder ggf beides anlegen, und man muss den Wert schreiben. Überschrift: [header] Zeile: attribut=attributwert. Jedoch muss ich da auch unterscheiden ob schon zeilen unter einer Überschrift stehen, oder nicht. Sinnvoll wäre es sicher auch, einen Zeilensprung nach der letzten Zeile unter einer Überschrift zu machen, und eine zeile freizulassen, bevor die nächste Überschrift geschrieben wird. Die Erkennung kann genauso ablaufen, wie die oben genannte. Allderings muss ich noch einen Weg finden die richtigen Überschriften zu finden und ebenso diese notfalls anzulegen.
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: C: ini File schreiben unter Linux.

Beitrag von cloidnerux » Mo Sep 06, 2010 2:11 pm

Gibt es einen ähnlichen BEfehl wie explode in C? (C++)
Ja, aber demnächst, wie schon häufiger erwähnt, erst denken, dann googlen, dann fragen:
http://www.java2s.com/Code/C/String/String-Split.htm
Ich will wieder mal an meinem INIMaker rumbasteln, diesmal soll das Ding auch auf Linux laufen, erstmal ohne Oberfläche, sondern es soll über Parameter steuerbar sein
Wenn du dein INI-Maker unter Windows mit C programmiert hast, dann sollte es kein Problem sein, ihn nach Linux zu Portieren. Die C-Standard-Bibliothek steht auch unter Linux zur Verfügung, also musst du nicht viel an deinem Code ändern, vorausgesetzt du nutzt nicht die WinAPI.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: C: ini File schreiben unter Linux.

Beitrag von naums » Mo Sep 06, 2010 6:03 pm

erstmal danke für den tipp, hab ich schon gemacht, bin dann auf strtok gestoßen und da is mir aufgefallen, dass ich keine Ahnung hab was der Befehl macht :D

Edit: grade bemerkt, da steht ja auch was bei Proggen.org :D http://proggen.org/doku.php?id=c:lib:st ... s[]=strtok

das Programm basiert auf der WinAPI , und die Version 2.0 schreibe ich komplett neu. Diesmal soll das Ding einmal parameter übergeben lassen, was das durch die Menüs wühlen sinnlos macht, und dann soll das ding mit dem Parameter -gui ne art "GUI Start" machen, aber eben in der Konsole und keine richtige Gui xD und ausßerdem fehlt wohl die Windows.h --> zum einfachen INIschreiben unter Windows. Genau den Befehl werde ich aber unter Windows wieder benutzen, unter Linux muss ich mir selbst sowas schreiben und in ne andre File auslagern :D
.globl truth
truth:
mov r0, #42
mov pc, lr

Antworten