Szukanie ciągu znaków w tekście.

0

Witam !
Chciałbym w ansi C zrealizować to, co w basu robie za pomocą jednej linijki, czyli:

cat /usr/local/admin-panel/config |grep version|awk '{print $2}'

a <ort>w ogóle </ort>to o co tu chodzi ;) :
[quote]
bash-2.05b# cat /usr/local/admin-panel/config |grep version|awk '{print $2}'
2.10
bash-2.05b# cat /usr/local/admin-panel/config
interface: eth1
version: 2.10
[/quote]

czyli pobranie wersji programu, jaka znajduje sie w tym pliku (potrzebne przy późniejszej procedurze aktualizacji).

Powiem szczerze, że jestem bardzo początkujący w C...i mam na to sposób, tzn na znalezienie tej wartości w tym pliku. Zobaczcie :

void wersja(void)
 {
    FILE *p;
    int licznik=0;
    int a;
    char *wynik;   
   
     p=fopen("/usr/local/admin-panel/config", "r");
  
       while( (getc(p))!=EOF)
        {
         licznik++;
        }
      
    char tekst_plik[licznik];
    char szukane[]="ver";
           
    
      for(a=0; a<licznik; a++)
      {
        tekst_plik[a]=getc(p);
      }
 
    wynik=strstr(tekst_plik ,szukane); 
          

      fclose(p);
    
}


To tylko "prototyp" kodu, bezużyteczny jeszcze, bo nic nie zwraca etc. W każdym razie to co chciałem tu zrealizować, to zapisanie zawartości pliku do tablicy ze znakami, po uprzednim policzeniu jak duza ma byc ta tablica po ilosci znakow w odczytywanym pliku. Potem porownanie z 2 lancuchem. Ale... kazdy widzi ze to w cholere w złą stronę poszło.
Jak to sie kurna robi... pewnie da sie to zrobic za pomoca jednej funkcji jakiejs w 2 linijkach, tylko ze ja jej pewnie nie znam i kombinuje niestworzone historie ;)

pomóżcie !
pozdro i z góry dziękuje.

0
#include<fstream.h>
main()
{
if stream plik;
char wzorzec[5]={"wzor"},*pozycja;
int counter=0;
plik.open("ścieżka");
while(plik.get(ch)) counter++;
int* tab=new int[counter];
pozycja=strstr(tab wzorzec);
delete tab;
plik.close();
}

Nie kompilowane wiec moze byc jakas literówka.

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