LINUX.ORG.RU

C. Парсер конфига


0

0

Собственно, пишу собственный парсер конфига (точнее только начал писать), и ниже приведенный код валится в ошибкой сегментации. Подскажите, пожалуйста, где здесь (в коде) ошибке? Заранее спасибо.

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <signal.h>

#define EOLN '\0'

#define iscomment(ch) (ch == '#') || (ch == ';') ? 1 : 0
#define isquote(ch) (ch == '\'') ? 1 : 0
#define iseoln(str) (!str) || (*str == EOLN) ? 1 : 0


#define KLENGTH 26
typedef char keyword_t[KLENGTH];

#define VLENGTH 76
typedef char value_t[VLENGTH];

void _sigsegv(int code)
{
printf("ERROR: Segmentation fault\n");
exit(code);
}

void parsekeyword(char *str, keyword_t *keyword, value_t *value)
{
int index = 0;

// Extracting keyword
*keyword[0] = EOLN;
while((!iseoln(str)) && (index < KLENGTH) && (!isspace(*str))){
*keyword[index] = *str;
str++;
index++;
}
*keyword[index + 1] = EOLN;

// Skipping spacechar's
while((isspace(*str)) && (!iseoln(str))) str++;

// Extracting value
*value[0] = EOLN;
/* int quote = 0; */
index = 0;
while((!iseoln(str)) && (index < VLENGTH)){
*value[index] = *str;
str++;
index++;
}
*value[index + 1] = EOLN;

}


int main(int argc, char **argv)
{
char *test = "Keyword value !!!";
keyword_t kw;
value_t v;

signal(SIGSEGV, _sigsegv);

parsekeyword(test, &kw, &v);
printf("KEYWORD: %s\n", kw);
printf("VALUE : %s\n", v);

return 0;
}

anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.