ROM
написал 30 мая 2007 года в 22:06 (1176 просмотров)
Ведет себя
как мужчина; открыл 33 темы в форуме, оставил 63 комментария на сайте.
Может завалялся у кого код на С для чтения конфигурационного файла в виде
параметр=значение ?
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

А-то под линукс их мало?
а где?
гуглил — один хлам
Какая тебе разница, хлам или не хлам? Тебе нужна та, которая написана на C и у которой есть конфигурационный файл.
В качестве альтернативы гугления можно посоурсфорджить. В смысле, на sourceforge.net взять первый попавшийся проект и, если тебе настколько «повезёт», что в нём нет конфигурационного файла, то взять следующий.
имхо оффтоп, перенести в раздел выше
брал за основу binkd но там так мудрёно =(
у меня где-то валялся самописный, если найду то выложу
Ключевое слово libconfig.
что-то вроде этого:
config_file = fopen(name, "r"); if(config_file) { config_t r_conf; const char* bd_name; config_init(&r_conf); if(config_read(&r_conf, config_file) == CONFIG_FALSE) { fprintf( stderr, "error on reading config file: %s, in line %d\n", config_error_text(&r_conf), config_error_line(&r_conf)); exit(1); } bd_name = config_lookup_string (&r_conf, "bd.name"); if(bd_name) { config->bd_name = strdup(bd_name); //printf("bd_name=%s", bd_name); } config_destroy(&r_conf); fclose(config_file); }#include void ParseIniFile(FILE *fp, char *section, char *value) { const int size = 100; char *word, Ret[256],secondRet[256], *Key, *StrValue; word = (char *)malloc(sizeof(char) * size); fseek(fp,0, SEEK_SET); while (!feof(fp)) { fgets(word, sizeof(char) * size, fp); if (!strstr(word, section) || (word[0] == ';')) continue; else { while (fgets(Ret, 256, fp)) { strncpy(secondRet,Ret,256); StrValue = strtok(secondRet,"="); if (!strstr(StrValue, value) || (Ret[0] == ';')) continue; else { Key = (strchr(Ret,'=') + 1); printf(Key); break; } } } } free(word); } main() { FILE *IniFile; IniFile = fopen("TEST.ini","r"); ParseIniFile(IniFile,"[IM]","ICQ"); ParseIniFile(IniFile,"[USER]","Login"); ParseIniFile(IniFile,"[USER]","Mail"); ParseIniFile(IniFile,"[USER]","Passsword"); ParseIniFile(IniFile,"[OS]","System"); fclose(IniFile); }Пример файла TEST.ini
Примитивно конечно , но где то я этот кусок юзал =))
http://library.gnome.org/devel/glib/unstable/glib-Key-value-file-parser.html
Фигасе примитивно! Примитивно — это так:
#include #include int main () { char name[32], value[32]; while (1) { scanf ("%*[ \t\n]"); scanf ("%32[^=]=%32s", name, value); printf ("`%s'=`%s'\n", name, value); } return 0; };)
Хорошая штука libini. Найти можно здесь же, на www.nixp.ru.