Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

predaja argumenta & cudni kod

[es] :: C/C++ programiranje :: predaja argumenta & cudni kod

[ Pregleda: 2977 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glupi

Član broj: 836
Poruke: 199
*.net.hinet.hr



Profil

icon predaja argumenta & cudni kod12.01.2003. u 21:20 - pre 258 meseci
Imam 2 pitanja:
1. Trebam pokrenut program iz svog programa te mu prosljedit neke argumente, do sada sam to radio preko execle() funkcije, ali sada vise nemogu tako prosljedit argumente jer program sada prvo trebam pokrenut te on poziva gets() funkciju??

2. Naisao sam na ovaj kod te mi nije jasno kako "zadovoljit" if naredbu (kakav mi treba biti argument da bi proslo)?
char *p;
if( p == (char *) strchr(argv[1],'@') ) p++;

hvala
 
Odgovor na temu

bokash

Član broj: 658
Poruke: 35
*.hemo.net

Sajt: bokash.co.yu


Profil

icon Re: predaja argumenta & cudni kod13.01.2003. u 02:35 - pre 258 meseci
1. mozda pomogne ShellExecute ( samo to je za win).
2. kolko ja videh ovomu dodje 64 decimalno ili 0x40 hex.
samo mi nije jasno kastovanje u char* ako strchr()
vraca char* ?

pozdrav od Borisa
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: predaja argumenta & cudni kod14.01.2003. u 17:00 - pre 258 meseci
Citat:
glupi:
Imam 2 pitanja:
1. Trebam pokrenut program iz svog programa te mu prosljedit neke argumente, do sada sam to radio preko execle() funkcije, ali sada vise nemogu tako prosljedit argumente jer program sada prvo trebam pokrenut te on poziva gets() funkciju??

system()?

Citat:

2. Naisao sam na ovaj kod te mi nije jasno kako "zadovoljit" if naredbu (kakav mi treba biti argument da bi proslo)?
char *p;
if( p == (char *) strchr(argv[1],'@') ) p++;


Nedovoljno konteksta da bi se išta moglo reći: kod je vrlo čudan, a ono što on radi je da traži '@' u prvom argumentu, ukoliko ga nađe proverava da li je p već sada pokazivač na taj znak u argv[1], a ako ga ne nađe proverava da li je p==NULL, i zatim uvećava p za 1.

Ukoliko se umesto ,,=='' stavi ,,='' , onda će kod raditi nešto zanimljivije: tražiće znak '@' i pokazivač postaviti na jedno mesto iza: vrlo korisno ako ti treba, npr. domen iz e-mail adrese.

Jedini je problem što ako se '@' ne pojavljuje u prvom argumentu, eto tebi ubrzo jedan ,,SIGSEGV'', pošto na adresi (char*)1 ne verujem da ti je dozvoljen pristup svuda osim u DOS-u :)

Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr



Profil

icon Re: predaja argumenta & cudni kod16.01.2003. u 20:48 - pre 258 meseci
evo ovo je cijeli kod programa:
int main(int argc,char **argv)
{
char buf[256], *p;

if(argc < 2)
{
printf("Usage: %s buffer\n",argv[0]);
exit(-1);
}

if(p == (char *)strchr(argv[1],'@')) p++;
else
{
printf("Bad buffer\n");
exit(-1);
}
strcpy(buf,p);
}
 
Odgovor na temu

tOwk
Danilo Šegan
Zemun/Beograd

Član broj: 94
Poruke: 2743
*.beograd-3.tehnicom.net

ICQ: 9344053
Sajt: alas.matf.bg.ac.yu/~mm011..


+2 Profil

icon Re: predaja argumenta & cudni kod16.01.2003. u 22:45 - pre 258 meseci
Taj kod, kratko rečeno ne valja.

Naime, p nije dodeljena vrednost, i zato može biti proizvoljno (tj. ne znamo šta je).

Zatim se poredi ta ,,slučajna'' vrednost p i pokazivač na '@' u prvom argumentu (NULL ako ga nema). Šanse da se ovaj uslov zadovolji su veoma male u ovom programu, i ne mogu se unapred predvideti.

Najverovatnije treba '==' zameniti u tom if-u sa '=', a onda će kod pronalaziti sve posle prvog '@' u prvom argumentu (npr. ako se prosledi kao prvi argument '[email protected]', onda će p pokazivati na deo 'elitesecurity.org').

Dodati else rešava onaj problem koji sam pomenuo u prethodnoj poruci (ako je p=NULL, onda se ne upotrebljava).

Na kraju se samo kopira ovo p u buf.

Mada sam sve ovo isto rekao i u prethodnoj poruci, možda je sada jasnije?
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
 
Odgovor na temu

glupi

Član broj: 836
Poruke: 199
*.net.hinet.hr



Profil

icon Re: predaja argumenta & cudni kod17.01.2003. u 22:30 - pre 258 meseci
hvala na odgovoru, onaj kod mi je bio zadan, moguce da je greska
 
Odgovor na temu

[es] :: C/C++ programiranje :: predaja argumenta & cudni kod

[ Pregleda: 2977 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.