Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc w funkcji z fscanf

Ostatnio zmodyfikowano 2013-11-26 11:05
Autor Wiadomość
rafal199414
Temat założony przez niniejszego użytkownika
Pomoc w funkcji z fscanf
» 2013-11-24 22:32:37
Otóż jestem nowy w C i C++ i mam problem z funkcją wczytującą dane ze stringa.

Mam taką sobie linijkę: "<owner name=Jakub></owner>" i chcę żeby funkcja wypisała na ekran jako name imię "Jakub" lub jakie kolwiek inne imie wpisane po znaku =. Proszę o pomoc.
C/C++
void finish_reading_owner( FILE * file, char * name ) {
    fscanf_s( file, " <  owner name = " );
    * name = 0;
    fscanf_s( file, " %[^>]", name, MAX_LEN );
    trim( name );
    fscanf_s( file, " < / owner >" );
}

finish_reading_owner( file, name );
cout << "Owner" << endl;
cout << "Name:\t" << name << endl;
P-97409
DejaVu
» 2013-11-25 21:04:03
Żadna z zamieszczonych przez Ciebie linijek, używająca fscanf-a nie ma najmniejszego sensu. Lepiej wróć do materiałów źródłowych, albo poczytaj na dobry początek jak się używa funkcji scanf.
P-97490
Monika90
» 2013-11-26 10:42:05
Takie użycie scanf, czy scanf_s, ma sens, ale należałoby jeszcze sprawdzać poprawność konwersji. A jeszcze większy sens ma użycie istniejących bibliotek: TinyXML, RapidXML (ta ostatnia wymaga wprowadzenia pewnych poprawek przed jej użyciem).

Z tym że <owner name=Jakub></owner> to nie jest prawidłowy XML, nie wiem czy tak miało być, czy to przoczenie autora postu.
P-97545
maly
» 2013-11-26 10:55:03
RapidXML (ta ostatnia wymaga wprowadzenia pewnych poprawek przed jej użyciem)
Jakich poprawek jeśli można zapytać?

@Down
Chodzi o ten bug http://sourceforge.net/p​/rapidxml/bugs/18/?
P-97548
Monika90
» 2013-11-26 11:05:59
Jeśli chcesz zapisać dokument XML, czyli użyć funkcji rapidxml::print, to okaże się, że za pomocą  kompilatorów, które prawidłowo implementują two-phase name lookup, kodu nie da się skompilować. Żeby to porawić trzeba dopisać kilka deklaracji szablonów funkcji w jednym z plików źródłowych biblioteki.

@Up
Właśnie o to chodzi.
P-97549
« 1 »
  Strona 1 z 1