Page 1 of 1
[Język C] Programowanie - podstawy.
Posted: Thu Apr 24, 2014 1:04 am
by nUmer_inaczej
Witam serdecznie.
Wziąłem się za język C. Podoba mi się - jednak:
1. Jak używać podstawień w tekście (zamiennik seda?)
2. Czy w zamian za np. 'system ("find $HOME -type f - name *.jpg")' znajdę jakąś bibliotekę klasyczą, czy właśnie przeszukiwanie tak się realizuje?
3. Czym zastąpić potoki (znane mi z basha)?
Moje pytania wynikają ze skrzywień (używania tylko basha).
Mam nadzieję, że ktoś mnie nakieruje na odpowiedzi, najlepiej, jeśli będą poparte przykładem.
Dzięki za uwagę.
Pozdrawiam.
Posted: Thu Apr 24, 2014 8:29 pm
by Garrappachc
Whoa, bash a C to totalnie inne światy. Jeżeli chcesz używać C do przeszukiwania systemu i podmieniania w nim znaków, to się nakodzisz, nakodzisz, a i tak nic Ci z tego ciekawego nie wyjdzie. W tego typu przypadkach lepiej zostań przy bashu. C jest raczej niskopoziomowe.
Posted: Mon Apr 28, 2014 12:11 am
by dziadu
Czy masz na mysli rzeczywiście czysty C czy może C/C++?
1. Musisz sprecyzować, co masz na myśli. Czy chesz parsować cały plik tekstowy i podmieniać tekst? Gdyby to był C++ to są biblioteki do tego.
2. Możesz zobaczyć choćby jak find jest zaimplementowane (paczka sys-apps/findutils)
3. A do czego Ci te potoki? W C odpowiednikiem pipe "|" byłoby wywołanie jednej funkcji z argumentem zwracanym przez inną, jeśli chodzi o przekierowania to są funkcje I/O.
No ale na podstawie tego co pytasz, zastanów się czy C jest najlepszym narzędziem dla Ciebie i Twoich zastosowań, może potrzebujesz języka wysokiego poziomu specjalizującego się w przetwarzaniu tekstu, np python?
Posted: Mon May 05, 2014 6:51 pm
by sebas86
1. W bibliotece standardowej nie ma nic do wyrażeń regularnych. Musisz zaprząc do pracy jakąś bibliotekę, dla C++ jest coś w BOOST.
2. Robi się to ręcznie i niestety również nie ma wsparcia w standardowej bibliotece. Glibc dostarcza opendir i odpowiednie struktury.
3. W pliku stdio.h jest zdefiniowane stdin, stdout, stderr - dzięki nim możesz pisać i czytać przy użyciu funkcji operujących na uchwycie typu FILE (np. fread, fwrite). Możesz też po prostu używać funkcji piszczących/czytających do/z standardowego wyjścia/wejścia printf, scanf, etc. Później taki program po prostu połącz potokiem z poziomu powłoki.
Posted: Tue May 06, 2014 2:04 am
by nUmer_inaczej
Dziękuję Wam za informacje.
Wynikałoby z tego, że pospieszyłem się nieco z zakupem książki Stephaena Prata "Język C. Szkoła programowania".
Doczytam ją jednak do końca, może uda mi się coś w tym języku napisać sensownego.
Póki co Wasze informacje są dla mnie w zupełności wystarczające.
Dzięki i pozdrawiam.
Posted: Sun Jun 01, 2014 3:31 am
by Jacekalex
1. W bibliotece standardowej nie ma nic do wyrażeń regularnych. Musisz zaprząc do pracy jakąś bibliotekę, dla C++ jest coś w BOOST.
Do regexu w C/C++ jest nie tylko Boost, jest też biblioteka PCRE, która jest o tyle sympatyczna, że ma licencję BSD, także można ją bezpiecznie brać do każdego projektu.
http://www.pcre.org/
Ma zresztą natywny support do C++, pliczek nagłówkowy:
jest chyba w każdym Gentoo na świecie.
Jest też jakaś dodatkowa wtyczka specjalnie do C++ (której na tą chwilę nic w systemie nie wymaga):
http://www.daemon.de/PCRE
Pozdro

Posted: Sat Jun 07, 2014 11:23 am
by Garrappachc
Ależ oczywiście, że są takie biblioteki. Tylko że nie są one częścią biblioteki standardowej C. I taki był sens mojej wypowiedzi. Co innego C++ (standard C++11).
Posted: Tue Jun 10, 2014 11:55 am
by Jacekalex
Garrappachc wrote:Ależ oczywiście, że są takie biblioteki. Tylko że nie są one częścią biblioteki standardowej C. I taki był sens mojej wypowiedzi. Co innego C++ (standard C++11).
Nie wiem, co rozumiesz przez bibliotekę standardową w kontekście boosta, widzę (w kontekście bibliotek dotyczących wsparcie dla regexa) liczba paczek wymagających boosta i PCRE jest podobna, ale paczki wymagające PCRE są "cięższe gatunkowo":
Porównywałem wyniki:
oraz:
Pozdro

Posted: Tue Jun 10, 2014 5:08 pm
by sebas86
Jest jakiś sens tych wypowiedzi? Nikt nie mówił, że BOOST jest częścią biblioteki standardowej, po prostu wskazałem prawdopodobnie najbardziej popularny zestaw dla języka C++, tym bardziej, że BOOST to nie tylko wyrażenia regularne ale masa innych elementów, które bardzo ułatwiają pracę i ładnie się ze sobą łączą (nie mówiąc już, że trzymają się konwencji dobrze ugruntowanych w STL). Ale to C++, dla C pozostają stety-niestety inne narzędzia.
Re: [Język C] Programowanie - podstawy.
Posted: Wed Jun 11, 2014 7:08 pm
by lsdudi
nUmer_inaczej wrote:Witam serdecznie.
Wziąłem się za język C. Podoba mi się - jednak:
1. Jak używać podstawień w tekście (zamiennik seda?)
2. Czy w zamian za np. 'system ("find $HOME -type f - name *.jpg")' znajdę jakąś bibliotekę klasyczą, czy właśnie przeszukiwanie tak się realizuje?
3. Czym zastąpić potoki (znane mi z basha)?
Moje pytania wynikają ze skrzywień (używania tylko basha).
Mam nadzieję, że ktoś mnie nakieruje na odpowiedzi, najlepiej, jeśli będą poparte przykładem.
Dzięki za uwagę.
Pozdrawiam.
Podejrzewam że lepiej zrobisz jak chwilowo dasz sobie spokój z C.
Naucz sie najpierw jakiegoś jezyka wyższego poziomu typu python/perl/ruby, Brakuje ci podstawowej wiedzy programistycznej, a klejenie kodu w C na podstawie kodu z basha to jeszcze gorzej niż pisanie w C na podstawie mieszanki jawy i PHP :]. Do wszystkiego są biblioteki ale raz trzeba wiedzieć jak je uzywać, niektóre z nich wymagają naprawdę sporej wiedzy na temat dzialania systemow operacyjnych i nieskopoziomowych wywolan. Dodakowo rozne filozofie w tworzeniu bibliotek powoduja ze uzywanie tych bibliotek to czesto katorga i meka, nie mowiac juz ze dokumentacja czetso jest tylko iluzoruczna.
PHP btw to mieszanka perla/basha/C/C++ z dodatkiem jawy.