Доброго времени господа, столкнулся со следующей проблемой. Значится - пишу header:
#ifndef PARSER_H_INCLUDED
#define PARSER_H_INCLUDED
#define MLEN 128
#define CFG_FILE "ccafe"
struct ccafe_params
{
char port[MLEN];
char MMSG[MLEN];
}
ccafe_params;
void init_parameters (struct ccafe_params *parms);
char* trim (char *s);
void parse_config (struct ccafe_params *parms);
#endif // PARSER_H_INCLUDED
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <parser.h>
void init_parameters (struct ccafe_params *parms)
{
strncpy (parms->item, "port", MLEN);
strncpy (parms->item, "MMSG", MLEN);
}
char * trim (char * s)
{
char *s1 = s, *s2 = &s[strlen (s) - 1];
while ( (isspace (*s2)) && (s2 >= s1) )
s2--;
*(s2+1) = '\0';
while ( (isspace (*s1)) && (s1 < s2) )
s1++;
strcpy (s, s1);
return s;
}
void parse_config (struct ccafe_params *parms)
{
char *s, buff[256];
FILE *fp = fopen (CFG_FILE, "r");
if (fp == NULL)
{
return;
}
while ((s = fgets (buff, sizeof buff, fp)) != NULL)
{
if (buff[0] == '\n' || buff[0] == '#')
continue;
char name[MLEN], value[MLEN];
s = strtok (buff, "=");
if (s==NULL)
continue;
else
strncpy (name, s, MLEN);
s = strtok (NULL, "=");
if (s==NULL)
continue;
else
strncpy (value, s, MLEN);
trim (value);
if (strcmp(name, "port")==0)
strncpy (parms->port, value, MLEN);
else if (strcmp(name, "MMSG")==0)
strncpy (parms->MMSG, value, MLEN);
// else if (strcmp(name, "size")==0)
// strncpy (parms->size, value, MAXLEN);
else
printf ("WARNING: %s/%s: Unknown name/value pair!\n",
name, value);
}
fclose (fp);
}
В main.c - подключаю parser.h, и пытаюсь выполнить следующий код
struct ccafe_params parms;
printf ("Initializing parameters to default values...\n");
init_parameters (&parms);
printf ("Reading config file...\n");
parse_config (&parms);
printf ("Final values:\n");
printf (" port: %s, MSG: %s\n", parms.port,parms.MMSG);