Problem sa main() i argumentima

2

Problem sa main() i argumentima

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Da, sad je jasno i sad radi. Ali, moram li uvek ovako da pokrecem program da bih mogao da upisem u komandnoj liniji?

Inace, hvala ti na pomoci. Very Happy Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 26 Avg 2010
  • Poruke: 10615
  • Gde živiš: Hypnos Control Room, Tokyo Metropolitan Government Building

Ili komandna linija ili Run dijalog. Možeš i preko prečice (Shortcut).



offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Ok, i hvala ti puno! Very Happy Very Happy

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12319
  • Gde živiš: Južni pol

Možda ti od koristi bude i ova ekstenzija:
http://www.mycity.rs/Windows-Download/BackgroundCMD-shell-ekstenzija.html

Nisam siguran da li radi pod Vistom/7 i 64-bitnim verzijama. Windows 8 već sadrži sličnu funkciju u ribbonu.

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Da ne bih otvarao novu temu jer je moj problem vezan za ovu temu, napisacu ovde gde sam zapeo i nikako nisam uspeo da ukapiram u cemu je greska. Nadam se da mi necete zameriti.

Trebam da napravim prorgram koji je da uzima argumenat iz komandne linije(jedan znak) i da taj znak nadje u jednom redu teksta. Ukoliko nadje da poveca promenljivu za jedan i kaza dodje do nultog znaka da se while funkcija zavrsi i izbaci rezultat na izlazu.

Problem je u tome sto mi uvek izbacuje da je nasao 0, a u tekstu ima to slovo. Ja ukucam 'a' u komandnoj liniji i izbaci mi da je nasao 0 a ima 2.

Evo koda:
#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) {    int found = 0;    char *p;    *argv += 2;    static char tekst[] = "Ja sam Viktor Prgomet.";    p = tekst;    while(*p++ != '\0' && *p == **argv)       ++found;        printf("Nadjeno puta: %d\n", found);    system("PAUSE");    return found; }

Sta trebam da izmenim u kodu da bi sada radio normalno?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14582
  • Gde živiš: Niš

Napisano: 22 Feb 2014 1:15

Uslovi u while petlji ti nisu dobri. Jednostavno ni ne uđe u petlju jer uslov nije zadovoljen u prvoj iteraciji. Generalno, while petlja treba da "vrti" do kraja niza, a unutar same petlje treba da imaš proveru samog karaktera. Nešto ovako:
while(*p++ != '\0')    if(*p == **argv)          found++;

Dopuna: 22 Feb 2014 1:19

I da, leba ti, nauči da koristiš dibager. Very Happy Vrlo je koristan...

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Hvala ti na pomoci! Very Happy

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14582
  • Gde živiš: Niš

Dobih pp sledeće sadržine: crusher ::A sta si mislio pod onim da naucim da koristim debugger?Ali bih da odgovorim javno. Smile

Kada sam rekao da treba da naučiš da koristiš dibager, mislio sam na to da treba da naučiš da koristiš dibager. Smile Čim napišeš kod koji radi, ali se ne ponaša onako kako treba, dibager u ruke. Postaviš prekidne tačke i kreneš lagano kroz program. Pratiš stanja promenljivih i na osnovu toga zaključuješ šta ne valja u kodu. Da si za poslednji kod koristio dibager, vrlo lako bi zaključio da se ni jednom ne prolazi kroz while petlju, a samim tim i da ti uslovi nisu odgovarajući, pa bi već sam rešio problem. E, na to sam mislio. Very Happy

offline
  • Pridružio: 15 Maj 2012
  • Poruke: 396

Napisano: 22 Feb 2014 11:22

Hvala ti na odgovoru i uzeci da koristim dibager. Very Happy

Dopuna: 22 Feb 2014 11:49

Ali, kod opet ne radi. Izmenio sam ga tj. izmenio sam samo onaj deo oko while petlje. Koje god slovo da ukucam da pronadje, uvek izbaci da je nasao jedan a ima dva. Na razumem sad do cega je problem.

offline
  • Pridružio: 19 Maj 2011
  • Poruke: 297

Ne valja ti algo. Probaj ovo:
char c = **(argv + 1);    ... while(*p != '\0')     if(*p++ == c)          found++;

Koristi debugger kao sto rece vasa pa ce ti se samo kasti.

Ko je trenutno na forumu
 

Ukupno su 552 korisnika na forumu :: 3 registrovanih, 0 sakrivenih i 549 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: kayvan6079, S-lash, suton