» »

[C] zagon programa z argumenti

[C] zagon programa z argumenti

Blinder ::

Rad bi, da bi mi program v c-ju zagnal ze narejen in preveden program rescrack.exe. To se doseze z ukazom system("rescrack.exe"). Komplikacija nastane, ker program rescrack.exe potrebuje še en argument za pravilen zagon. Primer v konzoli: "rescrack.exe viper.car". Pravilen zagon se doseze z ukazom system("rescrack.exe viper.car").

Jaz hocem, da bi lahko datoteko .car (drugi argument) podana šele med delovanjem programa. Tak da bi lahko rescrack.exe uporabil še ostale .car datoteke, brez da bi moral vsakic spreminjat kodo programa:\

Kak lahko to dosezem?
To sem do zdaj naredil:

int _tmain(int argc, _TCHAR* argv[])
{
printf("Type in the .car file you wish to edit: ");
char carFile[10];
scanf("%s", carFile);//prebere katero datoteko .car hocem uporabit
printf("Running Rescrack %s\n", carFile);
system("rescrack.exe viper.car");//tako dela pravilno, rad bi, da bi bil viper.car spremenljivka
getch();
return 0;
}
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
  • spremenilo: snow ()

Blinder ::

No pa mi je le ratalo:8)

char dds[16] = "rescrack.exe ";
strcat(dds, carFile);
system(dds);
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija

mile ::

sprintf(buf, "rescrack.exe %s",carFile)
system(buf);

Blinder ::

mile: sem poskusil tudi tvojo varianto, dela, hvala.
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija

SasoS ::

Pazi da bo buffer dovolj velik. 16 charov je premalo...

fiction ::

Ja, dobro bi bilo paziti na to, da ne pride do buffer overflowa:
strncat & snprintf (oz. sprintf_s) namesto strcat in sprintf.

Pa tudi system() je ponavadi problematicen ker pozene shell in bi ga lahko s
posebnimi znaki v argumentu zavedel.
Namesto da bi preverjal znake od uporabnika, bi bilo tu verjetno bolj
pametno uporabiti kar direktno execve (oz. CreateProcess na win) sistemski klic.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Termometer na USB vodilu (načrt, vezja, izkušnje in slike) :P (strani: 1 2 3 4 5 )

Oddelek: Elektrotehnika in elektronika
23035028 (23204) SloMusty
»

[NALOGA][Java] Branje vsebine datoteke vzvratno

Oddelek: Programiranje
71588 (1530) SkIDiver
»

int to string v c++

Oddelek: Programiranje
272310 (2038) OwcA
»

Pointer-ji v C-ju

Oddelek: Programiranje
291750 (1448) rokpok
»

C++ in pavza

Oddelek: Programiranje
161200 (961) napsy

Več podobnih tem