View previous topic :: View next topic |
Author |
Message |
nUmer_inaczej Apprentice
Joined: 24 Apr 2007 Posts: 165 Location: Bydgoszcz
|
Posted: Thu Apr 24, 2014 1:04 am Post subject: [Język C] Programowanie - podstawy. |
|
|
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. |
|
Back to top |
|
|
Garrappachc Guru
Joined: 26 Dec 2008 Posts: 362 Location: Kraków
|
Posted: Thu Apr 24, 2014 8:29 pm Post subject: |
|
|
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. _________________ De profundis clamavi ad Te, Domine
emerge --info | virtual aviation |
|
Back to top |
|
|
dziadu Guru
Joined: 04 May 2006 Posts: 467 Location: Kraków/Darmstadt/Munich
|
Posted: Mon Apr 28, 2014 12:11 am Post subject: |
|
|
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? |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Mon May 05, 2014 6:51 pm Post subject: |
|
|
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. _________________ Nieważne jaka dystrybucja, ważne, że Linux! |
|
Back to top |
|
|
nUmer_inaczej Apprentice
Joined: 24 Apr 2007 Posts: 165 Location: Bydgoszcz
|
Posted: Tue May 06, 2014 2:04 am Post subject: |
|
|
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. |
|
Back to top |
|
|
Jacekalex Guru
Joined: 17 Sep 2009 Posts: 554
|
Posted: Sun Jun 01, 2014 3:31 am Post subject: |
|
|
Quote: | 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:
Code: | /usr/include/pcrecpp.h |
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
Last edited by Jacekalex on Sat Jun 07, 2014 9:08 pm; edited 1 time in total |
|
Back to top |
|
|
Garrappachc Guru
Joined: 26 Dec 2008 Posts: 362 Location: Kraków
|
Posted: Sat Jun 07, 2014 11:23 am Post subject: |
|
|
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). _________________ De profundis clamavi ad Te, Domine
emerge --info | virtual aviation |
|
Back to top |
|
|
Jacekalex Guru
Joined: 17 Sep 2009 Posts: 554
|
Posted: Tue Jun 10, 2014 11:55 am Post subject: |
|
|
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:
Code: | equery d dev-libs/boost |
oraz:
Code: | equery d dev-libs/libpcre |
Pozdro
Last edited by Jacekalex on Wed Jun 11, 2014 1:08 am; edited 1 time in total |
|
Back to top |
|
|
sebas86 Guru
Joined: 01 May 2005 Posts: 568 Location: Szczecinek / Szczecin
|
Posted: Tue Jun 10, 2014 5:08 pm Post subject: |
|
|
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. _________________ Nieważne jaka dystrybucja, ważne, że Linux! |
|
Back to top |
|
|
lsdudi Guru
Joined: 12 Nov 2006 Posts: 392 Location: Warsaw
|
Posted: Wed Jun 11, 2014 7:08 pm Post subject: Re: [Język C] Programowanie - podstawy. |
|
|
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. _________________ RLU#416942 |
|
Back to top |
|
|
|