Нуждаюсь в помощи

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by KiPa, 24 Jan 2008.

  1. KiPa

    KiPa New Member

    Joined:
    24 Jan 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Доброго времени суток!
    Вот столкнулся с небольшой проблемой...
    Нужно написать программу перевода форматов 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

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    язык какой нужен????
     
  3. KiPa

    KiPa New Member

    Joined:
    24 Jan 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Юникс
     
  4. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Юникс, это ОС.
    2 Delimiter Если не ошибаюсь ему нужно на C, чтоб в юниксе с gcc компилился без проблем.
     
  5. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    имхо лучше на маке пиши.. он более гибкий язык

    :ddd
     
  6. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    ну давайте по тихоньку помогем, :)
    .... хоть я и не понял как там делить на 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 :cool:
    кароче .... если бы я понял :D ,чего тебе нужно я бы и сам написал а так рассказал о моей очччень нужной
    функции ;)
     
    #6 Delimiter, 25 Jan 2008
    Last edited: 25 Jan 2008
    1 person likes this.
  7. KiPa

    KiPa New Member

    Joined:
    24 Jan 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Спасибо огромное!!! даже не ожидал такого быстрого отклика...СПАСИБО.
    этот код компилируется в gcc?
     
  8. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Да, без проблем.