wyszukiwanie wyrazów w pliku

0

Mam problem. Chce napisać program który będzie szukał w pliku tekstowym konkretny wyraz i podawał numery linii w których znajduje się ten wyraz.

Jedyny pomysł jaki przychodzi mi do głowy to coś takiego

  if( (wskaznik = strstr( buf, skorowidz.slowa[i] )) != NULL ) {
          char * wp = wskaznik - 1;
          char * wk = wskaznik + strlen(skorowidz.slowa[i]); 
           if((( *wp >= 65 && *wp <= 90 ) || ( *wp >= 97 && *wp <= 122)) &&
             (( *wk >= 65 && *wk <= 90 ) || ( *wk >= 97 && *wk <= 122)));
           else
                 dodaj_pozycje_skorowidza( &skorowidz, i, nr_linii );
      }

Musiał bym jeszcze uwzględnić polskie znaki.
Jak można by to zrobić w lepszy sposób ?

1
  1. po kiego kodujesz znaki?
  2. zapoznaj się z isalpha()
  3. po kiego ci ten warunek if ... ?
0
      if( (wskaznik = strstr( buf, skorowidz.slowa[i] )) != NULL ) {
          char * wk = wskaznik + strlen(skorowidz.slowa[i]);
          char * wp = buf == wskaznik ? wk : wskaznik - 1;		  
           if(isalpha(*wp) == 0 && isalpha(*wk) == 0)
                 dodaj_pozycje_skorowidza( &skorowidz, i, nr_linii );
      }

Pierwszy if sprawdza czy w linii którą wczytałem występuje mój ciąg a drugi sprawdza czy ten ciąg jest wyrazem

0

Czy nie lepiej dodać spacje (po obu stronach) do tablicy skorowidz.slowa[] ?
Jeżeli znalezione słowo będzie na kocu wiersza to *wk będzie wskazywać na '\0'

0

Jeśli dodał bym spacje do tablicy to nadal nie znajdywał by mi wyrazów w "" () {} []
Wydaje mi się że to w niczym nie będzie przeszkadzać ponieważ sprawdzam tylko czy znak za wyszukiwana fraza nie jest litera a '\0' jak najbardziej nią nie jest

1 użytkowników online, w tym zalogowanych: 0, gości: 1