000
03.03.2005, 19:23 Uhr
FunnyDingo
|
Hallo zusammen,
ich habe eine Funktion geschrieben die eine Config-Datei ala Apache ausliest und die passende Werte Speichert. Hier der Code:
C++: |
#define CFG_FILE_BUFFER 256
int load_cfg(char *cfg_file) { FILE *fd; char buffer[CFG_FILE_BUFFER], tok_buffer[CFG_FILE_BUFFER], key[CFG_FILE_BUFFER], value[CFG_FILE_BUFFER]; extern cfg configuration; if (cfg_file == NULL) { printf("Please use name of config file as first option!\n"); return -1; } fd = fopen(cfg_file, "r"); if (fd == NULL) { printf("Can not open config file '%s'!\n", cfg_file); return -1; } while(fgets(buffer, CFG_FILE_BUFFER, fd) != NULL) { key[0] = '\0'; value[0] = '\0'; if (buffer[0] == '#') continue; sscanf(buffer, "%s %s", &key, &value); if (strcmp(key, "ServerRoot") == 0) strcpy(configuration.serverroot, value); if (strcmp(key, "Port") == 0) strcpy(configuration.port, value); } fclose(fd); return 0; }
|
Hier noch das Struct cfg:
C++: |
typedef struct cfg { char serverroot[255]; char port[255]; } cfg;
|
Ich hätte nun zwei Fragen: a) Was haltet ihr als erfahrene C/C++-Programmierer davon und b) wie kann ich Leerzeilen und Zeilen deren erstes "nicht blank" ein # ist, ignorieren?
Wie ihr seht habe ich den Versuch mit dem # bereits gestartet, aber das klappt nur wenn es wirklich das erste Zeichen der Zeile ist und Leerzeichen schaffe ich gar nicht auszuschließen.
lg,
Funny -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.de Dieser Post wurde am 03.03.2005 um 19:25 Uhr von FunnyDingo editiert. |