ну давайте по тихоньку помогем,
.... хоть я и не понял как там делить на XML "единицы"
бери мою функцию....
Код:
skipped by members of Delimiter's group....
mytrim функция просто уберает пробелы спереди с задницы строки
havegotfield функция выдирает из строки поле под номером nelement ,разделителем в которой выступают все символы в delimiterStr (в нашем случае похоже ";" для первого выдирания и ":" для 2-го)
номера элементов считаются с 1(единицы)
mode -либо 0 либо 1, при нуле два следующих друг за другом делимитера(символа разделителя) рассматривает как один, при 1 выдает пустое поле в случае двух рядом стоящих делимитера.
ну и цикл
где то
FILE *f;
char buf[1000];
int ind,flag_field;
char smb;
Код:
ind=0; flag_field=0;
while(.....)
{
switch(smb=fgetc(f))
{
case 0x0d:
*(buf+ind)=0;
break;
case 0x0a:
mytrim(buf);
if(flag_field==1)
{
if(*buf!='{')
analiz(buf); // функция которую требуется написать :)
else
flag_field=0;
}
else
if(strcmp(buf,"{events}")==0)
flag_field=1;
ind=0;
break;
default:
*(buf+ind)=smb;
ind++;
}
}
ПО ПОВОДУ ФУНКЦИИ АНАЛИЗА!!!
EVENT[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+200 4;END_D:06+11+2004;
LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;C ATEGORIES:%c1+%c2
допустим 1-я строчка в буфере buf
значит
havegotfield(buf,buf1,1,";",1);
// в buf1 EVENT[1]=START_T:07+29+30
havegotfield(buf1,buf2,1,":",1);
// в buf2 EVENT[1]=START_T
havegotfield(buf1,buf3,2,":",1);
// в buf3 07+29+30
havegotfield(buf2,buf4,1,"=",1);
// в buf4 EVENT[1]
ну а тот кто не любит "размазывать кашу"могет сразу
havegotfield(buf1,buf3,N,":;=",1); // cо всеми делимитерами.
функция в случае успеха возвращает 1 в ином 0
кароче .... если бы я понял

,чего тебе нужно я бы и сам написал а так рассказал о моей очччень нужной
функции
