Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz sorath #1647 üzenetére

    argc, argv:
    Vegyük azt, hogy a main függvényednek így néz ki a fejléce:
    int main(int argc, char *argv[])
    {
    /* blabla */
    }

    Itt az argc azt határozza meg, hány paramétered van+1. Azért +1, mert ebben a számban benne van magának a futtatandó programodnak a neve is (pl. akarmi.exe a futtatandó fájlod; de NEM maga a programnév, mint string van benne, hanem csak plusz egy "paraméter").
    Az argv pedig sztringre mutató mutatók tömbje, azért char * argv[] (ez ekvivalens ezzel: char **argv); ez megmondja, hány string szerepel a parancssorban. A 0. index maga a program neve (a korábban említett akarmi.exe), mint string, az 1. index (és az azt követő indexek) pedig az(ok), ami(ke)t a fájl neve mögé írtál: akarmi.exe parameter1 (parameter2 parameter3...)

    Eszerint ellenőrizgethetsz: pl. azt is csekkolhatod ilyen módon, hogy a program neve után pontosan annyi paramétert adtak-e meg, mint amennyit elvártál, és/vagy a paraméter(ek) neve megegyezik-e valamilyen értékkel, amitől függően hajtasz végre mondjuk egy műveletet, stb...

    A Te esetedben ("min és max érték között kikeresi és listázza a primszámokat") pl. így hívod meg a programot a parancssorból:
    akarmi.exe 10 50

    Még az elején include-old az stdlib-et, és akkor átalakíthatod a paraméterként kapott sztringet egész számmá az atoi függvénnyel:
    #include <stdlib.h>

    Végezz egy ellenőrzést, hogy a paraméterek száma nem kisebb-e a szükségesnél (kell a min és a max is):
    if(argc<3)
    /* hibaüzenetek, kilépés hibával */;

    A korábban int-ként deklarált min és max változóknak pedig add át a megfelelő értékeket:
    min = atoi(argv[1]);
    max = atoi(argv[2]);

    Ezt követően pedig végezd el a prímtesztelést.

    Összefoglalva (a konkrét kiegészítés már a Te dolgod):
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    int min, max;
    if(argc<3)
    /* hibaüzenetek, kilépés hibával */;
    min = atoi(argv[1]);
    max = atoi(argv[2]);
    /* ide jöhet a prímtesztelés */
    }

    Sk8erPeter

Új hozzászólás Aktív témák