Pomoc w funkcji z fscanf
Ostatnio zmodyfikowano 2013-11-26 11:05
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. 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;
|
|
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. |
|
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. |
|
maly |
» 2013-11-26 10:55:03 |
|
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. |
|
« 1 » |