W jaki sposob moge znalezsc text w lancuchu znakow... np. potrzebuje znalezsc to co jest pomiedzy ">>" a "<<" -
>>szukany text<<
czyli w tym przypadku 'szukany text'... jest jakas funkcja string do czegos takiego?? Pisze w Visual c++...</cpp>
W jaki sposob moge znalezsc text w lancuchu znakow... np. potrzebuje znalezsc to co jest pomiedzy ">>" a "<<" -
>>szukany text<<
czyli w tym przypadku 'szukany text'... jest jakas funkcja string do czegos takiego?? Pisze w Visual c++...</cpp>
ja tam bym to zrobil tak:
(nie sprawdzane, moze byc literoowka)
char *oddaj_tekst( const char* text, const char* poczatek, const char* koniec )
{
char *p, *k, *nowy; int wielkosc;
p = strstr( text, poczatek ); // znajdz poczatkowy string
if( !p ) return NULL;
p += strlen( poczatek ); // przesun sie o wielkosc szukanego stringa
k = strstr( p, koniec ); // szukajac od tego momentu znajdz koniec
if( !k ) return NULL;
wielkosc = (int)( k - p ); // ile liter ma string pomiedzy
nowy = (char*) malloc( wielkosc + 1 );
if( !nowy ) return NULL;
nowy[ wielkosc ] = '\0';
memcpy( nowy, p, wielkosc); // wrzuc string go nowego bufora
return nowy;
}
i tyle
zasada dzialania jest prosciutka
mamy jakis string
"costamAAala ma kotaBBnictam"
i chcemy dorwac string miedzy AA i BB
program dziala tak:
najpierw szuka AA
"costamAAala ma kotaBBnictam"
|
p
potem przesuwa sie o ilosc liter w poczatku (len(AA) == 2)
"costamAAala ma kotaBBnictam"
|
p
nastepnie szuka stringu konca
"costamAAala ma kotaBBnictam"
| |
p k
wyznacza wielkosc (k-p == wielkosc)
i alokuje pamiec na nowy buforek po czym wrzuca ten string do niej
Dzieki wielkie!!