Spusteni programu v c – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spusteni programu v c – C / C++ – Fórum – Programujte.comSpusteni programu v c – C / C++ – Fórum – Programujte.com

 

Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
29. 8. 2008   #1
-
0
-

Potreboval bych sputit program v C, tak aby po spusteni toho programu se okamzite pokracovalo v provadeni programu a necekalo se na ukonceni toho externiho exe souboru. Predstavoval bych si to asi nejak takhle:

#include <stdio.h>

#include <stdlib.h>
#include <unistd.h>


int main(void)
{

system("notepad");

printf("Program bezi hned po spusteni notepadu dal, \n");
printf("neceka se na ukonceni programu. \n");

return 0;
}

Nahlásit jako SPAM
IP: 93.89.144.–
KIIV
~ Anonymní uživatel
8632 příspěvků
29. 8. 2008   #2
-
0
-

mam pocit ze ti bude stacit dat tam "start notepad"

jinak se to dela tak ze si naforkujes proces a v tom detskym si to spustis... ten start je ale myslim jednodussi ..

Nahlásit jako SPAM
IP: 77.237.136.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
30. 8. 2008   #3
-
0
-

To KIIV :
diky, funguje to

Nahlásit jako SPAM
IP: 93.89.144.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
31. 8. 2008   #4
-
0
-

Jeste bych potreboval pomoct. Potrebuju pres funkci system() spustit prikaz
start argv[2]

system("start" argv[2]);

Todle mi bohuzel hlasi chybu. Poradte nekdo prosim.

Nahlásit jako SPAM
IP: 93.89.144.–
czbero0
Stálý člen
31. 8. 2008   #5
-
0
-

char * string = "start ";

strcpy(string, argv[2]);
system(string);

Nahlásit jako SPAM
IP: 62.240.178.–
http://moddb.com/mods/police-brutality/
KIIV
~ Anonymní uživatel
8632 příspěvků
31. 8. 2008   #6
-
0
-

To czbero : nechybi ti tam nahodou taky neco jako "alokace" pameti kam ten retezec mas nakopirovat? krom toho by se hodil spis strcat ... protoze strcpy by to nakopiroval misto toho "start " a pak by uz jen prepisoval dal pamet za tim retezcem ...

Nahlásit jako SPAM
IP: 80.250.1.–
KIIV
~ Anonymní uživatel
8632 příspěvků
31. 8. 2008   #7
-
0
-

minimalne to bude neco jako:



char string[80] = "start ";
strcat(string, argv[2]);

a to jeste nesmi nikdo poslat delsi retezec nez 73 znaku jinak to bude prepisovat pamet za tou promennou...
tudiz nejlepe by bylo:


char string[80] = "start ";
strncat(string, argv[2], 73);

Nahlásit jako SPAM
IP: 80.250.1.–
czbero0
Stálý člen
31. 8. 2008   #8
-
0
-

To KIIV : Aha, no v C++ jsem už dlouho nedělal.

Nahlásit jako SPAM
IP: 62.240.178.–
http://moddb.com/mods/police-brutality/
KIIV
~ Anonymní uživatel
8632 příspěvků
31. 8. 2008   #9
-
0
-

To czbero : to ja delam ted uz spis programy do jednocipu v C ... ale todle sou hodne zaludny a nebezpecny chyby no... jinak pokud bys chtel ten pointer tak bys musel pouzit malloc... treba char * neco = malloc(80*sizeof(char));
pak strcpy(neco, "system "); a na zaver strncpy(neco, argv[2], 79 - strlen(neco)) ; :D

Nahlásit jako SPAM
IP: 80.250.1.–
KIIV
~ Anonymní uživatel
8632 příspěvků
31. 8. 2008   #10
-
0
-

a ovsem na zaver: free(neco); ... aby to bylo kompletni

Nahlásit jako SPAM
IP: 80.250.1.–
Earl Cash0
Věrný člen
31. 8. 2008   #11
-
0
-

To KIIV : toto pouzit lze a jsi omezen pouze delkou retezce, ktery pri inicializaci vlozis (pamet alokuje prekladac):

char myString[] = "my_string";
vytvori se pole o 10 prvcich (delka retezce + nulovy znak)...

pokud by se to prevedlo na pointery, je mozny i zapis:
char *myString = "my_string";

Nahlásit jako SPAM
IP: 193.85.184.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
KIIV
~ Anonymní uživatel
8632 příspěvků
31. 8. 2008   #12
-
0
-

To Earl Cash : ano samo ze muzes hodit pointer na retezec zadanej "..." jenze tim spis uz tam nedostanes zadnej znak navic... a ted si nejsem jist jestli takovej retezec jde realokovat na vic.,..
ideal by asi byl neco jako toto:



char * start = "start ";
char * cmd = malloc( strlen(start) + strlen(argv[2]) + 1); /* zabereme pamet na prikaz start s mezerou a prikaz v argv[2] */
strcpy(cmd, start); /* nejdriv start do cmd */
strcat(cmd, argv[2]); /* pak k nemu prihodime i prikaz */

system(cmd); /* vykoname prikaz */

free(cmd); /* uvolnime pamet */

Nahlásit jako SPAM
IP: 80.250.1.–
mephi0
Expert
3. 9. 2008   #13
-
0
-

a preto som nechal C++ :-D
ja necham spajanie stringov na operator + a správu pamäte GC.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
KIIV
~ Anonymní uživatel
8632 příspěvků
3. 9. 2008   #14
-
0
-

nekdy se ale ty retezce ukoncene nulou hodi... uplne vidim jak delas se stringem v mikrokontroleru

Nahlásit jako SPAM
IP: 80.250.1.–
Earl Cash0
Věrný člen
3. 9. 2008   #15
-
0
-

To mephi : tak ma to sve kouzlo....alespon vis do ceho mlatit, kdyz se vyskytnou chyby :))

Nahlásit jako SPAM
IP: 193.85.184.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
c_coder0
Newbie
20. 9. 2008   #16
-
0
-

A co takhle zavolat WinAPI funcki ?

ShellExecuteA(NULL,"open","notepad.exe",NULL,NULL,SW_NORMAL);

Nahlásit jako SPAM
IP: 85.207.28.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 80 hostů

Podobná vlákna

Spusteni programu — založil Tom9k

Spuštění programu — založil roman.jaros

Spuštění programu — založil Kenvelo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý