Собственно, пишу собственный парсер конфига (точнее только начал писать), и ниже приведенный код валится в ошибкой сегментации. Подскажите, пожалуйста, где здесь (в коде) ошибке? Заранее спасибо.
#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;
}
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум математика (2005)
- Форум pthread (2008)
- Форум getaddrinfo выдает нулевые адреса 0.0.0.0 (2022)
- Форум Segmentation fault (2005)
- Форум что не так в использовании структуры (2008)
- Форум Help with realloc() wanted. (2006)
- Форум Проблема с деструктором класса (2002)
- Форум Продолжим про исключения!! (2007)
- Форум C и попытки вернуть из функции указатель на массив символов (2009)
- Форум Указателей массив на разные типы данных. (2013)