Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Język C] Programowanie - podstawy.
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) Polish OTW
View previous topic :: View next topic  
Author Message
nUmer_inaczej
Tux's lil' helper
Tux's lil' helper


Joined: 24 Apr 2007
Posts: 133
Location: Bydgoszcz

PostPosted: Thu Apr 24, 2014 1:04 am    Post subject: [Język C] Programowanie - podstawy. Reply with quote

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
View user's profile Send private message
Garrappachc
Guru
Guru


Joined: 26 Dec 2008
Posts: 357
Location: Kraków

PostPosted: Thu Apr 24, 2014 8:29 pm    Post subject: Reply with quote

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
View user's profile Send private message
dziadu
Guru
Guru


Joined: 04 May 2006
Posts: 436
Location: Kraków/Darmstadt/Munich

PostPosted: Mon Apr 28, 2014 12:11 am    Post subject: Reply with quote

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?
_________________
1% Twojego podatku to 100% naszej pasji!
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 550
Location: Szczecinek / Szczecin

PostPosted: Mon May 05, 2014 6:51 pm    Post subject: Reply with 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.
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
View user's profile Send private message
nUmer_inaczej
Tux's lil' helper
Tux's lil' helper


Joined: 24 Apr 2007
Posts: 133
Location: Bydgoszcz

PostPosted: Tue May 06, 2014 2:04 am    Post subject: Reply with quote

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
View user's profile Send private message
Jacekalex
Guru
Guru


Joined: 17 Sep 2009
Posts: 493

PostPosted: Sun Jun 01, 2014 3:07 am    Post subject: Reply with quote

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. :)
Code:
dev-libs/libpcre

http://www.pcre.org/

Jest też jakaś dodatkowa wtyczka specjalnie do C++:
Code:
dev-libs/pcre++

http://www.daemon.de/PCRE

Pozdro
8)
Back to top
View user's profile Send private message
Jacekalex
Guru
Guru


Joined: 17 Sep 2009
Posts: 493

PostPosted: Sun Jun 01, 2014 3:31 am    Post subject: Reply with quote

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. :)
Code:
dev-libs/libpcre

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):
Code:
dev-libs/pcre++

http://www.daemon.de/PCRE

Pozdro
8)


Last edited by Jacekalex on Sat Jun 07, 2014 9:08 pm; edited 1 time in total
Back to top
View user's profile Send private message
Garrappachc
Guru
Guru


Joined: 26 Dec 2008
Posts: 357
Location: Kraków

PostPosted: Sat Jun 07, 2014 11:23 am    Post subject: Reply with quote

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
View user's profile Send private message
Jacekalex
Guru
Guru


Joined: 17 Sep 2009
Posts: 493

PostPosted: Tue Jun 10, 2014 11:55 am    Post subject: Reply with quote

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
8)


Last edited by Jacekalex on Wed Jun 11, 2014 1:08 am; edited 1 time in total
Back to top
View user's profile Send private message
sebas86
Guru
Guru


Joined: 01 May 2005
Posts: 550
Location: Szczecinek / Szczecin

PostPosted: Tue Jun 10, 2014 5:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
lsdudi
Guru
Guru


Joined: 12 Nov 2006
Posts: 389
Location: Warsaw

PostPosted: Wed Jun 11, 2014 7:08 pm    Post subject: Re: [Język C] Programowanie - podstawy. Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) Polish OTW All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum