Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
malena Forumaš(ica)

Pridružen/a: 27. 03. 2009. (16:43:42) Postovi: (62)16
Spol: 
Lokacija: ...
|
Postano: 21:33 pon, 15. 6. 2009 Naslov: argumenti komadne linije |
|
|
[code:1]
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
FILE *in, *out;
int c;
if(argc<4){
printf("Greska! ");
exit(-1);
}
in=fopen(argv[1], "rt");
out=fopen(argv[2], "wt");
fscanf(in, "%s", argv[1]);
fprintf(out, "%s ", argv[2]);
fclose(in);
fclose(out);
system("PAUSE");
return 0;
}
[/code:1]
[size=9][color=#999999]Added after 1 minutes:[/color][/size]
ima li netko vrimena da mi malo pojasni argumente komandne linije? i znaci li ista uopce ovaj kod
:anifaint:
[size=9][color=#999999]Added after 2 minutes:[/color][/size]
[code:1] #include <stdio.h>
#include <stdlib.h>
/*zadatak 8.4*/
double netrag(FILE *in){
int i, j, n;
double x, netr=1.0;
fscanf(in, "%d", &n);
for(i=0; i<n; i++){
for(j=0; j<n; j++){
fscanf(in, "%lf", &x);
if(i!=j) netr*=x;
}
}
return netr;
}
int main(){
FILE *in, *out;
char ulaz[256], izlaz[256];
double m;
printf("Ime ulazne datoteke: ");
scanf("%[^\n]", ulaz);
printf("Ime izlazne datoteke: ");
scanf("[^\n]", izlaz);
in=fopen(ulaz, "rt");
if(in==NULL){
printf("Greska prilikom otvaranja.\n");
exit(-1);
}
out=fopen(izlaz, "wt");
if(out==NULL){
fclose(in);
printf("Greska prilikom otvaranja.\n");
exit(-1);
}
m=netrag(in);
fprintf(out, "Produkt nedijagonalnih elemenata je %d.\n", m);
fclose(in);
fclose(out);
system("PAUSE");
return 0;
}
[/code:1]
da ne otvaram novu temu... zna li itko zasto se ovo cudo ugasi cim upisem ime ulazne datoteke?
fala puno
:D
Kod: |
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
FILE *in, *out;
int c;
if(argc<4){
printf("Greska! ");
exit(-1);
}
in=fopen(argv[1], "rt");
out=fopen(argv[2], "wt");
fscanf(in, "%s", argv[1]);
fprintf(out, "%s ", argv[2]);
fclose(in);
fclose(out);
system("PAUSE");
return 0;
}
|
Added after 1 minutes:
ima li netko vrimena da mi malo pojasni argumente komandne linije? i znaci li ista uopce ovaj kod
Added after 2 minutes:
Kod: | #include <stdio.h>
#include <stdlib.h>
/*zadatak 8.4*/
double netrag(FILE *in){
int i, j, n;
double x, netr=1.0;
fscanf(in, "%d", &n);
for(i=0; i<n; i++){
for(j=0; j<n; j++){
fscanf(in, "%lf", &x);
if(i!=j) netr*=x;
}
}
return netr;
}
int main(){
FILE *in, *out;
char ulaz[256], izlaz[256];
double m;
printf("Ime ulazne datoteke: ");
scanf("%[^\n]", ulaz);
printf("Ime izlazne datoteke: ");
scanf("[^\n]", izlaz);
in=fopen(ulaz, "rt");
if(in==NULL){
printf("Greska prilikom otvaranja.\n");
exit(-1);
}
out=fopen(izlaz, "wt");
if(out==NULL){
fclose(in);
printf("Greska prilikom otvaranja.\n");
exit(-1);
}
m=netrag(in);
fprintf(out, "Produkt nedijagonalnih elemenata je %d.\n", m);
fclose(in);
fclose(out);
system("PAUSE");
return 0;
}
|
da ne otvaram novu temu... zna li itko zasto se ovo cudo ugasi cim upisem ime ulazne datoteke?
fala puno
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 22:31 pon, 15. 6. 2009 Naslov: |
|
|
Dakle ovako, idemo redom:
1. argumenti komandne linije :
[tt]int main(int argc, char *argv[]){ [/tt]
ova linija je ključna, i svi na prvoj godini se naviknemo na [tt]int main (void)[/tt] pa kad vidimo onakvo čudeso se isprepadnemo. Ali nije to takvo čudovište kako izgleda. Naime, ta linija nam kaže da će se naš program pozvati sa nekim argumentima (a ne sa void).
Prvi parametar, argc, je int, kako i piše, a kaže koliko argumenata je učitano.
Drugi parametar, char* argv[] je polje stringova, u kojem su naši argumenti.
Na mjestu argv[0] se nalazi "ime programa", tj ako si radila u praktikumu na ubuntuu, onaj ./prog (ako je kompajlirano recimo [tt]gcc program.c -o prog[/tt]). Na mjestima argv[1],argv[2] itd se nalaze naši parametri, koje smo mi učitali.
Primjer: Neka je kompajliran program sa "imenom" prog, i neka sa komandne linije učitava jedno ime i jedan int. Poziv takvog programa (u ubuntuu) bi bio:
[tt]./prog Luuka 21[/tt]
i tada su sljedeće vrijednosti argumenata komandne linije:
argc=3
argv[0]=./prog
argv[1]="Luuka"
argv[2]="21"
(primjeti, "21" kao string, ne kao int, to se kasnije mora konvertirat, recimo sa sscanf.)
2. " i znaci li ista uopce ovaj kod "
Da, ovaj kod nešto znači, a kaže:
nakon pokretanja programa provjeri dal imaš 3 argumenta komandne linije (tj manje od 4, ali kasnije se vidi da mora bit 3)
ako imaš, onda otvori datoteku za čitanje sa imenom koje je učitano kao drugi argument komandne linije (nakon ./nešto), i još jednu datoteku za pisanje, kojoj je ime treći argument komandne linije. Onda iz prve datoteke pročitaj neki string, i onda ga zapiši u drugu.
3. "zna li itko zasto se ovo cudo ugasi cim upisem ime ulazne datoteke? "
Možda zato jer nema te datoteke u istoj mapi gdje je program? Pazi, moraš i extenziju napisat, .txt, ili koja već je, ne samo ime.
Eto, nadam se da je pomoglo
Dakle ovako, idemo redom:
1. argumenti komandne linije :
int main(int argc, char *argv[]){
ova linija je ključna, i svi na prvoj godini se naviknemo na int main (void) pa kad vidimo onakvo čudeso se isprepadnemo. Ali nije to takvo čudovište kako izgleda. Naime, ta linija nam kaže da će se naš program pozvati sa nekim argumentima (a ne sa void).
Prvi parametar, argc, je int, kako i piše, a kaže koliko argumenata je učitano.
Drugi parametar, char* argv[] je polje stringova, u kojem su naši argumenti.
Na mjestu argv[0] se nalazi "ime programa", tj ako si radila u praktikumu na ubuntuu, onaj ./prog (ako je kompajlirano recimo gcc program.c -o prog). Na mjestima argv[1],argv[2] itd se nalaze naši parametri, koje smo mi učitali.
Primjer: Neka je kompajliran program sa "imenom" prog, i neka sa komandne linije učitava jedno ime i jedan int. Poziv takvog programa (u ubuntuu) bi bio:
./prog Luuka 21
i tada su sljedeće vrijednosti argumenata komandne linije:
argc=3
argv[0]=./prog
argv[1]="Luuka"
argv[2]="21"
(primjeti, "21" kao string, ne kao int, to se kasnije mora konvertirat, recimo sa sscanf.)
2. " i znaci li ista uopce ovaj kod "
Da, ovaj kod nešto znači, a kaže:
nakon pokretanja programa provjeri dal imaš 3 argumenta komandne linije (tj manje od 4, ali kasnije se vidi da mora bit 3)
ako imaš, onda otvori datoteku za čitanje sa imenom koje je učitano kao drugi argument komandne linije (nakon ./nešto), i još jednu datoteku za pisanje, kojoj je ime treći argument komandne linije. Onda iz prve datoteke pročitaj neki string, i onda ga zapiši u drugu.
3. "zna li itko zasto se ovo cudo ugasi cim upisem ime ulazne datoteke? "
Možda zato jer nema te datoteke u istoj mapi gdje je program? Pazi, moraš i extenziju napisat, .txt, ili koja već je, ne samo ime.
Eto, nadam se da je pomoglo
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3561)16
Spol: 
Lokacija: /sbin/init
|
Postano: 22:47 pon, 15. 6. 2009 Naslov: |
|
|
[quote="Luuka"](primjeti, "21" kao string, ne kao int, to se kasnije mora konvertirat, recimo sa sscanf.)[/quote]
[tt]atoi()[/tt] je vjerojatno prakticniji. ;)
[quote="Luuka"]2. " i znaci li ista uopce ovaj kod "
Da, ovaj kod nešto znači, a kaže:
nakon pokretanja programa provjeri dal imaš 3 argumenta komandne linije (tj manje od 4, ali kasnije se vidi da mora bit 3)
ako imaš, onda otvori datoteku za čitanje sa imenom koje je učitano kao drugi argument komandne linije (nakon ./nešto), i još jednu datoteku za pisanje, kojoj je ime treći argument komandne linije. Onda iz prve datoteke pročitaj neki [color=red]string[/color], i onda [color=red]ga[/color] zapiši u drugu.[/quote]
Procita jednu rijec (a ne string) iz prve datoteke, no u drugu zapise ime te druge datoteke (a ne procitanu rijec). :? Dakle, taj kod nesto znaci, ali nije bas jako smislen. :)
Luuka (napisa): | (primjeti, "21" kao string, ne kao int, to se kasnije mora konvertirat, recimo sa sscanf.) |
atoi() je vjerojatno prakticniji.
Luuka (napisa): | 2. " i znaci li ista uopce ovaj kod "
Da, ovaj kod nešto znači, a kaže:
nakon pokretanja programa provjeri dal imaš 3 argumenta komandne linije (tj manje od 4, ali kasnije se vidi da mora bit 3)
ako imaš, onda otvori datoteku za čitanje sa imenom koje je učitano kao drugi argument komandne linije (nakon ./nešto), i još jednu datoteku za pisanje, kojoj je ime treći argument komandne linije. Onda iz prve datoteke pročitaj neki string, i onda ga zapiši u drugu. |
Procita jednu rijec (a ne string) iz prve datoteke, no u drugu zapise ime te druge datoteke (a ne procitanu rijec). Dakle, taj kod nesto znaci, ali nije bas jako smislen.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
|