Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

argumenti komadne linije
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
malena
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 27. 03. 2009. (16:43:42)
Postovi: (62)16
Spol: žensko
Sarma = la pohva - posuda
= 9 - 8
Lokacija: ...

PostPostano: 21:33 pon, 15. 6. 2009    Naslov: argumenti komadne linije Citirajte i odgovorite

[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
Padam u (o)nesvijest!

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




Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 22:31 pon, 15. 6. 2009    Naslov: Citirajte i odgovorite

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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 22:47 pon, 15. 6. 2009    Naslov: Citirajte i odgovorite

[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. Wink

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). Confused Dakle, taj kod nesto znaci, ali nije bas jako smislen. Smile



_________________
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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 22:50 pon, 15. 6. 2009    Naslov: Citirajte i odgovorite

E da, u pravu si... nisam pripazio koji je index kod argv-a... nisam ni pomislio da moglo tak besmisleno bit :D
E da, u pravu si... nisam pripazio koji je index kod argv-a... nisam ni pomislio da moglo tak besmisleno bit Very Happy



_________________
"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 Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan