Poslao: 20 Feb 2014 23:29
|
offline
- crusher
- Ugledni građanin
- 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.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 20 Feb 2014 23:47
|
offline
- Sass Drake
- Anti Malware Fighter
Rank 2
- Pridružio: 26 Avg 2010
- Poruke: 10622
- Gde živiš: Hypnos Control Room, Tokyo Metropolitan Government Building
|
Ili komandna linija ili Run dijalog. Možeš i preko prečice (Shortcut).
|
|
|
|
|
|
Poslao: 21 Feb 2014 23:26
|
offline
- crusher
- Ugledni građanin
- 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?
|
|
|
|
Poslao: 22 Feb 2014 01:19
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- 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. Vrlo je koristan...
|
|
|
|
|
|
Poslao: 22 Feb 2014 11:49
|
offline
- crusher
- Ugledni građanin
- Pridružio: 15 Maj 2012
- Poruke: 396
|
Napisano: 22 Feb 2014 11:22
Hvala ti na odgovoru i uzeci da koristim dibager.
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.
|
|
|
|
Poslao: 22 Feb 2014 17:46
|
offline
- morando
- Građanin
- 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.
|
|
|
|