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.