Archiv verlassen und diese Seite im Standarddesign anzeigen : c Datei einlesen und auswerten
Hi
Ich suche nach einer Möglichkeit Variablen aus einer Datei alla /etc/default/* auszulesen. Dort liegen Datein mit Einstellungen von verschiedenen Programmen. Die entsprechende Datei wird im Pfad mit angegeben und das Programm sucht dann darin nach Einstellungen zum beispiel für den Seriellen port oder so.
wie kann ich C beibringen erstens eine Datei Zeile für Zeile auszulesen und dann Optionen wie "MODEMDEVICE=/dev/ttyS0" auszuwerten und auch im Program die Variable Modem auf /dev/ttyS0 zu setzen???
Öffnen und schreiben von Dateien is kein Problem nur krieg ich halt das Auslesen und die Auswertung nich hin.
thanks for help
moe
Vincent Vega
10-01-2007, 12:07
Du musst die Datei öffnen, einlesen und den Inhalt parsen.
Einfacher könnte aber sein, Deine Anwendung über Umgebungsvariablen zu steuern, so dass Du in der Shell etwas in der Art von "export MODEMDEVICE=..." sagst und dann Dein Programm startest.
Um die Umgebungsvariable in Deinem Programm auszulesen kannst Du getenv(3) verwenden.
übber Umgebungsvariablen will ich's nicht machen, da das Programm auf nem Webserver laufen soll und die Daten, die über die Serielle Schnittstelle komme in eine Datenbank schreiben soll. Da will ich mit umgebungsvariablen die auch noch von anderen Programmen ausgelesen werden können nichts machen.
Genau um diese Parsen geht es
Wie mache ich das????
thanks
moe
Vincent Vega
11-01-2007, 11:50
Umgebungsvariablen sind nur für die Prozesse sichtbar, die von der selben Shell gestartet wurden, nicht für alle.
Um eine Konfigurationsdatei zu parsen verwendet man gewöhnlich lex/yacc oder flex/bison. lex und flex sind Scanner-Generatoren, yacc und bison erstellen den Parser. Eventuell musst Du Dir ein bisschen Theorie dazu antun.
mein tipp: python währe für dein Problem geradezu ideal...
falls du python kannst, machs damit!
musketaquid
13-01-2007, 14:32
Du kannst die Zeile z.B. mit strtok() zerpflücken.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char cfgstr[] = "MODEMDEVICE=/dev/ttyS0";
char *p;
p = strtok( cfgstr, "=" );
printf( "Erster Teil der Zeichenkette: %s\n", p );
p = strtok( NULL, "\n" );
printf( "Zweiter Teil der Zeichenkette: %s\n", p );
exit(0);
}
Folgendes kommt dabei raus:
Erster Teil der Zeichenkette: MODEMDEVICE
Zweiter Teil der Zeichenkette: /dev/ttyS0
Dann musst du halt nur noch auf eventuelle Fehler überprüfen. ;)
BUGS
Avoid using these functions. If you do use them, note that:
These functions modify their first argument.
These functions cannot be used on constant strings.
The identity of the delimiting character is lost.
aus der manpage von strtok.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.