#include <stdio.h> #include <string.h> //einfaches Parserprogramm char *get_config(char *name, FILE *file) { char buffer[200]; char a_name[100]; static char value[100]; size_t i,len; rewind(file); while (!feof(file)) { fscanf(file," %200[^\n]",buffer); if (';' == buffer[0] ) continue; sscanf(buffer," %99[^ =] = %99[^\n]",a_name,value); len = strlen(a_name); for (i=0;i<len;i++) if ('_' == a_name[i] ) memmove(a_name+i,a_name+i+1,len-i); if (!strcasecmp(a_name,name)) break; else value[0] = '\0'; } return value; } //-------------------------------------------- int main(void) { FILE *config; char *configfile="test.cfg"; char *pString; if (NULL == (config = fopen(configfile,"r" ))) fprintf(stderr,"\nUnable to open configuration file %s\n",configfile); //--------------- unsigned short i=0; char *p[]={"name","wert","height","width"}; // printf("Anzahl der Elemente: %d\n", sizeof(p)/sizeof(int)); for (i=0;i<(sizeof(p)/sizeof(int));i++) { pString = get_config(p[i],config);//Abfrage , ob der Eintrag existiert if (pString[0]) printf("Variable %s ist %s\n", p[i],get_config(p[i],config)); else printf("Fehler: %s nicht in config %s gefunden\n",p[i],configfile); } fclose(config); return 0; } //--------------------------------------------- /* test.cfg Datei zum parsen #this a comment ;this a comment name = test2 wert = 4711 height=80 */