Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wildcard u command line parametru?

2 views
Skip to first unread message

Chupo

unread,
Apr 5, 2015, 10:01:02 AM4/5/15
to
Kako u C-u (crosspost-ao sam i na comp.programiranje.c++ grupu ali me
zanima za C komandno-linijsku aplikaciju) napraviti da program moze
processirati vise file-ova cija su imena proslijedjena u parametru s
jocker znakom za ime file-a?

Treba mi da program mogu pozvati s:

generiraj_podatke.c bitmap*.bmp

pa da onda u programu procitam sve .bpm file-ove s imenom:

bitmap_01.bmp
bitmap_02.bmp
bitmap_03.bmp
bitmap_04.bmp
.
.
.
--
Let There Be Light
Custom LED driveri prema specifikacijama
http://tinyurl.com/customleddriver

Chupo

Bubba

unread,
Apr 6, 2015, 4:53:06 PM4/6/15
to
Chupo's log on stardate 05 tra 2015

> Kako u C-u (crosspost-ao sam i na comp.programiranje.c++ grupu ali me
> zanima za C komandno-linijsku aplikaciju) napraviti da program moze
> processirati vise file-ova cija su imena proslijedjena u parametru s
> jocker znakom za ime file-a?
>
> Treba mi da program mogu pozvati s:
>
> generiraj_podatke.c bitmap*.bmp
>
> pa da onda u programu procitam sve .bpm file-ove s imenom:
>
> bitmap_01.bmp
> bitmap_02.bmp
> bitmap_03.bmp
> bitmap_04.bmp

Onako na prvu sto mi pada na pamet - ili koristi pipe ili slozio dio koda
koji ce raditi isto u C-u ako imas wildcard u argv-u.

--
"If you lie to the compiler,
it will get its revenge."
Henry Spencer
http://www.pci-z.com/

Fil Korigan

unread,
Apr 7, 2015, 5:01:02 AM4/7/15
to
Chupo <bad_...@yahoo.com> wrote:

> Treba mi da program mogu pozvati s:
> generiraj_podatke.c bitmap*.bmp
> pa da onda u programu procitam sve .bpm file-ove s imenom:
> bitmap_01.bmp
> bitmap_02.bmp
> bitmap_03.bmp

Nisi napisao za koju platformu trebas ovo te koja je C okolina u pitanju.
Pretpostavljam da je Windows u pitanju.

Wildcard parametri se mogu automatski pretvoriti u imena fajlova, samo sto
na Win to nije default. Kako to ukljuciti ovisi o okolini:

a) MSVC ... linkaj setargv.obj
b) MinGW ... stavi globalni int _CRT_glob = 1

Nakon toga ce wildcardi

#include <stdlib.h>
int main(int argc, char** argv) {

for(int i = 1; i < argc; i++)
puts(*(argv + i));

return 0;
}

biti zamijenjeni s imenima datotekama ako program pozoves s npr.:

program *.*

Bruno Babic

unread,
Apr 7, 2015, 10:30:02 AM4/7/15
to
On 5.4.2015. 15:35, Chupo wrote:
> Kako u C-u (crosspost-ao sam i na comp.programiranje.c++ grupu ali me
> zanima za C komandno-linijsku aplikaciju) napraviti da program moze
> processirati vise file-ova cija su imena proslijedjena u parametru s
> jocker znakom za ime file-a?

Kao sto su ti vec rekli, na Unixoidima mozes dobiti da ti se automatski
to pretvori u niz imena fileova, a na Windowsima to moras sam odraditi.

Win API FindFirstfile/FindNextfile prima wildcarde.

--
bbabic(a)globalnet.hr
2b||!2b?

Chupo

unread,
Apr 7, 2015, 10:30:02 AM4/7/15
to
In article <XnsA4756D4E9234C...@195.29.150.48>, Fil
Korigan <nob...@nowhere.com> says...
> Chupo <bad_...@yahoo.com> wrote:
>
> > Treba mi da program mogu pozvati s:
> > generiraj_podatke.c bitmap*.bmp
> > pa da onda u programu procitam sve .bpm file-ove s imenom:
> > bitmap_01.bmp
> > bitmap_02.bmp
> > bitmap_03.bmp
>
> Nisi napisao za koju platformu trebas ovo te koja je C okolina u pitanju.
> Pretpostavljam da je Windows u pitanju.
>
> Wildcard parametri se mogu automatski pretvoriti u imena fajlova, samo sto
> na Win to nije default. Kako to ukljuciti ovisi o okolini:
>
> a) MSVC ... linkaj setargv.obj
> b) MinGW ... stavi globalni int _CRT_glob = 1
>
> Nakon toga ce wildcardi
>

<snip>

>
> biti zamijenjeni s imenima datotekama ako program pozoves s npr.:
>
> program *.*
>

OS je Windows XP a mislio sam to napraviti kao W32 Console Application
u Visual Studio 2008.

Chupo

unread,
Apr 7, 2015, 10:30:02 AM4/7/15
to
In article <XnsA474E8CD41BD...@130.133.4.11>, Bubba
<nick...@banelli.biz.invalid> says...
> Onako na prvu sto mi pada na pamet - ili koristi pipe ili slozio dio koda
> koji ce raditi isto u C-u ako imas wildcard u argv-u.
>

Ovako?

dir bitmap*.bmp /b | generiraj_podatke.c

Chupo

unread,
Apr 7, 2015, 10:30:02 AM4/7/15
to
In article <mg0oag$kji$1...@ls237.t-com.hr>, Bruno Babic <a@b.c> says...
> Kao sto su ti vec rekli, na Unixoidima mozes dobiti da ti se automatski
> to pretvori u niz imena fileova, a na Windowsima to moras sam odraditi.
>
> Win API FindFirstfile/FindNextfile prima wildcarde.
>

Ovo s pipe mi se cini najjednostavnije?

Bubba

unread,
Apr 7, 2015, 5:34:12 PM4/7/15
to
Chupo's log on stardate 07 tra 2015

> Ovako?
> dir bitmap*.bmp /b | generiraj_podatke.c

Ne bas. :(

Windows CLI ti je out of the box poprilicno nezgrapan za takvo sto;
Powershell je tu kud i kamo jaci. Ako zelis nesto portabilno, preporucam
ti da ides u smjeru druge varijante koju sam ti rekao (a Bruno Babic ti je
dao dobar hint kako to postignut); inace, nadji neke alternative head/tail
varijantama pa ces morat ici s njima, jer ovo nece bas ici samo tako
jednostavno...

Chupo

unread,
Apr 7, 2015, 7:01:02 PM4/7/15
to
In article <XnsA475EFC544AD...@130.133.4.11>, Bubba
<nick...@banelli.biz.invalid> says...
> Ne bas. :(
>


Kako si onda mislio da iskoristim pipe?


> Windows CLI ti je out of the box poprilicno nezgrapan za takvo sto;
> Powershell je tu kud i kamo jaci. Ako zelis nesto portabilno, preporucam
> ti da ides u smjeru druge varijante koju sam ti rekao (a Bruno Babic ti je
> dao dobar hint kako to postignut); inace, nadji neke alternative head/tail
> varijantama pa ces morat ici s njima, jer ovo nece bas ici samo tako
> jednostavno...
>

Ne treba mi nista portabilno nego sam si htio sloziti alat za
generiranje C array-a s podacima o bitmapama koje mogu ubaciti u
program za mikrokontroler. Postoji par programa koji to rade ali mi
treba nesta specificno gdje bi u vise bitmapa velicine 20x16 pixela
generirao frame-ove animacije pa bi onda s programom kojega bi si
slozio iz tih bitmapa generirao array-e.

Specificno je jer se radi o character display-u (standardni HD44780
kontroler) koji ima character ROM + RAM za samo 8 5x8 znakova. Iz
bitmapa bi program izdvajao blokove od po 5x8 bitova (svaki byte je
jedan red karaktera od 5 pixela a najvisa 3 bita se zanemaruju) pa bi u
array-u dobio strukturu koju bi mogo direktno byte po byte preslikavati
u podrucje RAM-a koje definira custom karaktere. Ako se ti karakteri
prethodno ispisu na ekranu u 2 reda po 4 znaka se unutar alfanumerickog
ekranu prakticki dobije mini 20x16 graficki ekran. Evo 2 primjera:

https://youtu.be/ZarVHGqWNkk

https://youtu.be/0iirQQ9yEDI

Meni to treba da bih na 40x4 alfanumerickom ekranu mogo u interrupt-u
vrtiti animacije koje bi bile indikacija statusa rada uredjaja.

Bubba

unread,
Apr 8, 2015, 3:04:50 AM4/8/15
to
Chupo's log on stardate 08 tra 2015

>> Ne bas. :(
> Kako si onda mislio da iskoristim pipe?

Ne samo s jednim pajpom, u tvom slucaju. :)

Od oka, treba ti barem "more(.exe)" i barem jedna petlja; uz to, nigdje
nisi napisao da radis u Windowsima, jer na vecini *nixeva takve stvari
mozes relativno lagano izvest po defaultu.

> Ne treba mi nista portabilno nego sam si htio sloziti alat za
> generiranje C array-a s podacima o bitmapama koje mogu ubaciti u
> program za mikrokontroler. Postoji par programa koji to rade ali mi
> treba nesta specificno gdje bi u vise bitmapa velicine 20x16 pixela
> generirao frame-ove animacije pa bi onda s programom kojega bi si
> slozio iz tih bitmapa generirao array-e.
>
> Specificno je jer se radi o character display-u (standardni HD44780
> kontroler) koji ima character ROM + RAM za samo 8 5x8 znakova. Iz
> bitmapa bi program izdvajao blokove od po 5x8 bitova (svaki byte je
> jedan red karaktera od 5 pixela a najvisa 3 bita se zanemaruju) pa bi
> u array-u dobio strukturu koju bi mogo direktno byte po byte
> preslikavati u podrucje RAM-a koje definira custom karaktere. Ako se
> ti karakteri prethodno ispisu na ekranu u 2 reda po 4 znaka se unutar
> alfanumerickog ekranu prakticki dobije mini 20x16 graficki ekran. Evo
> 2 primjera:
>
> https://youtu.be/ZarVHGqWNkk
>
> https://youtu.be/0iirQQ9yEDI
>
> Meni to treba da bih na 40x4 alfanumerickom ekranu mogo u interrupt-u
> vrtiti animacije koje bi bile indikacija statusa rada uredjaja.

Kul. :)

Pa kad si vec nakucao tog koda, kopiraj tri i pol linije odavde i
rijesi se muka.

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx

Chupo

unread,
Apr 8, 2015, 12:30:02 PM4/8/15
to
In article <XnsA4765C60F26B...@130.133.4.11>, Bubba
<nick...@banelli.biz.invalid> says...
> Ne samo s jednim pajpom, u tvom slucaju. :)
>
> Od oka, treba ti barem "more(.exe)" i barem jedna petlja; uz to, nigdje
> nisi napisao da radis u Windowsima, jer na vecini *nixeva takve stvari
> mozes relativno lagano izvest po defaultu.
>


To da zaboravimo navesti OS nam je (nama koji koristimo Windows-e) vrlo
cest propust. Ne znam zbog cega zaboravljamo da je uz problem potrebno
navesti i platformu :-/


>
> Kul. :)
>
> Pa kad si vec nakucao tog koda, kopiraj tri i pol linije odavde i
> rijesi se muka.
>
> https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx
>

Tnx!

Inace mi sta se tice generiranja podataka koji mi trebaju nije problem
imena file-ova hardcode-irati ali sam mislio ako vec radim pa da
napravim i opcenitije, mozda nekad zatreba.
0 new messages