nixp.ru v3.0

20 октября 2017,
пятница,
01:00:26 MSK

DevOps с компанией «Флант»
decvar написал 31 марта 2004 года в 16:22 (533 просмотра) Ведет себя как мужчина; открыл 111 тему в форуме, оставил 1838 комментариев на сайте.

есть:

#define BUSIZ 256;

char buf[BUFSIZ+1];

заполненый строками разделенными '\n’. В конце’\0\′.

//open file

file=open(filename,O_RDONLY);

if (file<0)

{

perror(«open config»); exit(2);

}

//read file

nread = read(file,buf,BUFSIZ);

if (nread<0)

{

perror(«read config»);exit(3);

}

//EOF marker

buf[nread]=’\0\′;

Так же есть:

char *install[6][50];

char *paths[6][50];

Надо:

Из buf построчно закидать строки в каждый из массивов. Т.е первую в install первой, вторую в paths первой, третью в install второй, четвертую в

paths второй и так далле. В каждом массиве 6 элементов, длинной 50 символов….

Потом надо из install каждый элелмент перевести в

struct GList {

gpointer data;

GList *next;

GList *prev;

};

методом

GList* g_list_append (GList *list_element, gpointer data);

gpointer равносильно «qwe»

list = g_list_append (list, «first»);

КАК?

Longobard
decvar
есть:

Из buf построчно закидать строки в каждый из массивов. Т.е первую в install первой, вторую в paths первой, третью в install второй, четвертую в

paths второй и так далле.

Я не понял. У тебя ведь buf одномерный, какие еще в нем строки? В нем только \n\n\n\n……\n\n\n\0

Вот и все. Какие еще строки надо закидать? То ли у меня мозги опухли посчле чтения RFC, то ли ты нечетко вопрос поставил.

decvar

В buf есть

aaaaa\nbbbbbb\nccccc\nddddd\0

надо

в install[Y][X]

aaaaa

ccccc

в paths[Y][X]

bbbbb

ddddd

nread = read(file,buf,BUFSIZ);
 if (nread<0)
 {
  perror("read config");exit(3);
 }
Genie

1) можно попробовать в цикле по idx через sscanf(buf, «%s\n%s\n%s», &install[idx], &path[idx], &next_buf_value);

2) либо честно через strpos() и strncpy()

decvar

полечил через strtok