PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : system() paramter übergeben



avuton
27-01-2003, 10:43
Hallo, wie ist es möglich der System funktion noch parameter anzugeben?
weil bei system("tar xvfz lala.tar.gz");
gibt der gcc fehler aus,ich glaube function system(), too few actual parameters oder so ähnlich, wie kann ich das trotzdem machen?
danke

SeeksTheMoon
27-01-2003, 11:16
eigentlich sollte das so funktionieren, wie Du es geschrieben hast.
Welche Header hast Du eingebunden? stdlib.h?

in der manpage steht: int system(const char *string);

avuton
27-01-2003, 11:25
ja das funzt, aber das system("tar xvfz %s", eingabe);
das funktioniert wieder nicht, warum?

anda_skoa
27-01-2003, 11:35
Original geschrieben von avuton
ja das funzt, aber das system("tar xvfz %s", eingabe);
das funktioniert wieder nicht, warum?

Weil das zwei Parameter sind!

Und bitte nicht Crossposten, nur in einem Forum.

Ciao,
_

brotzi
27-01-2003, 11:46
char buffer[MAXLEN];
snprintf(buffer, MAXLEN, "tar blabla %s", eingabe);
system(buffer);

msi
27-01-2003, 20:23
was soll eignetlich der scheuiß mit den doppelpostings??
http://www.mrunix.de/forums/showthread.php?s=&threadid=31007
sowas kann ich gar nicht leiden!!

wie wärs wenn du außerdem mal dein ganzes programm herzeigst?

avuton
28-01-2003, 07:55
Das mit dem Doppelposting tut mir leid, ich kann das auch nicht leiden und ich habe nur vergessen, dass ich das schon mal gepostet habe, kann doch jedem mal passieren oder?
Mein ganzes Programm, ich denke, das ist in diesem Fall nicht nötig, es ist ein einfaches Programm, zum entpacken von gezippten Files, für Leute, die auf meiner Site was runterladen und nicht wissen, wie tar.gz files entpackt werden.
Na es sollte ungefähr so aussehen:


#include <stdio.h>
#include <stdlib.h>

main(){
char name[30];
printf("\nName der Datei: ");
gets(name);
system("tar xvfz %s", name); /*aber das klappt ja nicht*/
}

ReSeT
28-01-2003, 09:48
hallo Avuton!

Die Definition von System lautet

int system (const char * string)

System erwartet nur einen Zeiger auf eine konstante Zeichenkette, also musst Du den Dateinamen
vorher mit strncat an deine bestehende Zeichenkette anhängen und dann an System übergeben.

Dann klappts auch mit dem Nachbarn.

GreetZ

ReSeT

avuton
28-01-2003, 09:51
ja, ok super danke, das hat geklappt.
greets avuton

anda_skoa
28-01-2003, 11:43
Original geschrieben von avuton
ja, ok super danke, das hat geklappt.
greets avuton

Brotzi hatte auch schon eine Lösung gepostet, die praktisch deinen Ansatz verwirklicht hat.

Und besser du verwendest fgets, siehe die Warnung in der manpage von gets.

Ciao,
_

avuton
28-01-2003, 11:59
ja, ich hab das jetzt mit fgets gemacht, war vielleicht besser....
danke nochmal