Доброго времени суток! Вот столкнулся с небольшой проблемой... Нужно написать программу перевода форматов VCal в RDF. Казалось бы ничего сложного нету, нужно просто найти строку точнее слово в ней в VCal-документе и перебросить это слово в RDF.. Но дело в том что я полный дуб в программировании! ОЧень прошу помогите мне, это дело нужно написать на Unix в принципе тот же "С". Вот примеры.. VCal Code: VisionDocument=VCAL; VisionVersion=1.0; X-Generator=Vision Calendar; {calendar} Name=Test%spCalendar; X-Description=Some%spdescription%spabout%spmy%spcalendar; [COLOR=Red]{events} EVENT[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+2004;END_D:06+11+2004; LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;CATEGORIES:%c1+%c2 [/COLOR] {tasks} TASK[1]=START_T:07+29+30;END_T:07+45+59;START_D:06+11+2004;END_D:06+11+2004; LAST_DAY:false;LOCATION:Home;NAME:Test;NOTE:Test;CATEGORIES:%c2; STATUS:important;PRIORITY:high;COMPLETED;false;PERCOMPLETE:90; {categories} CATEGORY[1]=NAME:personal;COLOUR:blue; CATEGORY[2]=NAME:holidy;COLOUR:red; нужно перенести в RDF Только те строки что красным цветом. Вот присер RDF Code: <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns="http://www.ietf.org/rfc/rfc2445.txt#" > <Vcalendar> <vevent> <Vevent> <uid rdf:resource="palm:Appointments/77" /> <description>Imesh meeting</description> <dstart> <Date rdfs:label="2001-02-20"> <hour>11</hour> <minute>0</minute> </Date> </dstart> <dend> <Date rdfs:label="2001-02-20"> <hour>12</hour> <minute>0</minute> </Date> </dend> <organizer> <foaf:Person> <foaf:mbox rdf:resource="mailto:libby.miller@bristol.ac.uk" /> </foaf:Person> </organizer> <attendee> <foaf:Person> <foaf:mbox rdf:resource="mailto:libby.miller@bristol.ac.uk" /> </foaf:Person> </attendee> </Vevent> </vevent> </Vcalendar> </rdf:RDF> Люди, помогите, мне хотябы кусок программы (начало)...ато выгонят с института блин.
Юникс, это ОС. 2 Delimiter Если не ошибаюсь ему нужно на C, чтоб в юниксе с gcc компилился без проблем.
ну давайте по тихоньку помогем, .... хоть я и не понял как там делить на XML "единицы" бери мою функцию.... Code: 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; Code: 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 кароче .... если бы я понял ,чего тебе нужно я бы и сам написал а так рассказал о моей очччень нужной функции