frage zu system();
-
Hi, ich habe vor einigen tagen mit c angefangen, das ganze standart-zeug if, else, switch, funktionen.......... etc klappt auch schon ganz gut (kennt man ja von anderen sprachen.
Nun will/muss ich den befehl system(); benutzen und zwar, soll ein programm ineinem anderen verzeichnis gestartet werden : "C:\Programme\programm\programm.exe"
das programm soll nicht einfach nur gestartet werden, es soll mit einen bestimmten parameter gestartet werden: "C:\Programme\programm\programm.exe bla blub"
nur das will nicht so einfach, als wenn man es in die eingabeaufforderung eingibt,soweit ich weiss werden die \ rausgefiltert, kann mir wer sagen wie ich nun trotzdem programme mit parametern aus anderen verzeichnissen heraus starte?
Danke schonmal!
mfg smash
-
man: system(3) ist kein "Befehl", sondern eine Funktion.
Und in Strings werden \ zu \.
-
Zeig deinen Aufruf von system(), dann kann man dir auch sagen, was du falsch machst. Und bei \ wirst du Compilefehler bekommen, daher wird dein Programm garnicht starten können, um das andere Programm zu starten. Vielleicht startest du ja noch eine alte Version von deinem Programm, bei dem noch kein system() Aufruf erfolgt.
-
Es geht um Teamspeak, ich will ein Admin-Client für privat Zwecke Programmieren:
#include <stdio.h>
#include <stdlib.h>int main ()
{
system ("C:\Programme\Teamspeak2_RC2\client_sdk\Control.exe CONNECT TeamSpeak://tsip:tsport?nickname=bla&password=meinpw123");
return 0;
}könnt ja mal im teamspeak sein, und in der eingabe aufforderung:
C:\Programme\Teamspeak2_RC2\client_sdk\Control.exe DISCONNECT
eingeben, und schon seit ihr getrennt. naja gibt ne menge befehle (rechte vergeben, channels erstellen, etc, etc...
in meinem einfachem programmm, hatte ich vor einfach zu einem server zu connecten (in der eingabe aufforderung geht es ja auch :>
Aber im programm geht:
system ("C:\Programme\Teamspeak2_RC2\client_sdk\Control.exe CONNECT TeamSpeak://tsip:tsport?nickname=bla&password=meinpw123");
nicht so einfach.
Bräucht eeine alternative, Danke schonmal
mfg smash
-
Schau dir meinen Beitrag oben nochmal genauer an. Dann versuch deinen Code zu compilen und diesmal ignorierst du nicht die Warnings vom Compiler, sondern änderst die \ in \\ um.
-
Hi, also das mit den \\ hat sich schnell nach meinem post erledigt (escapen...)
nunja, jetzt besteht noch das problem das bei dem fumktionsaufruf system() zu viele parameter übergeben werden... und das komischer weise der 2te und 3te punkt ind der ip weg geht (Der erste gleibt...)eventuell compilliert ihr es mal, das ist so ziemlich mein erstes programm in C
#include <stdio.h> #include <stdlib.h> char tsip[1][15]; char tsport[1][5]; char nick[1][20]; char bug[1][20]; int loops; int main() { printf("\nBurnser's Ts2 Flooder\n\n"); printf("TeamSpeak Ip: "); scanf("%s",tsip[1]); printf("\nTeamSpeak Port: "); scanf("%s",tsport[1]); printf("\nNickname: "); scanf("%s",nick[1]); system("C:\\Programme\\Teamspeak2_RC2\\client_sdk\\tsControl.exe CONNECT TeamSpeak://%s:%s?nickname=%s",tsip[1],tsport[1],nick[1],bug[1]); }
Danke schonmal für die bissherige und hoffentlich noch folgende hilfe :>
mfg smash
-
Du musst dir den String den du system() übergibst mit man: strcat bzw. man: strncat zusammenbauen, da system(), wie du bereits gemerkt hast, nur ein Argument übergeben bekommt.
Außerdem kannst du dir alle [1] im Programm sparen. Zur Erinnerung:
int a[4]; // Platz für 4 Integer a[0]; // das erste int im Array a[3]; // das _letzte_ int im Array
Das solltest du im Buch/Tutorial nochmal nachlesen.
-
hey, danke funzt 1a mit strcpy() und strcat();
meine fragen sind geklärt, könnt hier gerne zu machen.
mfg