system() in Verbindung einer variablen
-
Hallo allerseits,
ich bin relativ neu in C, verzeiht mir deshalb wenn ich keine Ahnung habeIch würde gerne ein Programm erstellen, mit dem ich in der Eingabeaufforderung Seiten pingen kann. Habe bis jetzt folgenden Code:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char szip[21]; printf("Bitte geben Sie die Website ein, die gepingt werden soll\n"); scanf("%20s", szip); system("ping %s" szip); return 0; }
Beim compilieren kommt aber folgender fehler:
error: expected ')' before 'szip'
Danke schon mal im Voraus
-
du bist im falschen forum. und c ist eh tot! schau mal in die stellenanzeigen :p
-
kellerassel schrieb:
du bist im falschen forum. und c ist eh tot! schau mal in die stellenanzeigen :p
in welches forum gehört denn das?
-
Ins C-Forum.
Du kannst den kompletten Befehl in einer weiteren Variablen speichern:
char arg[40]; snprintf(arg, 40, "ping %s", szip); system(arg);
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Der Fehler der da angemeckert wird, ist das fehlende ; zwischen dem Stringliteral "ping %s" und dem Variablennamen (szip).
Wenn du das einbaust, wird allerdings der Compiler meckern, dass du zu viele Paramter für die Funktion
system
hast.Formatspecifier (wie %s) gibt es nur bei printf, scanf und strftime.
Da deutet das f im Funktionsnamen schon auf das formatierte hin.Du kannst den Befehl aber auch mit
strcpy
undstrcat
zusammen basteln.
-
In diesem Fall auch möglich:
char szip[26] = "ping "; printf("Bitte geben Sie die Website ein, die gepingt werden soll.\n"); /* Fünf Zeichen hinter dem Anfang von szip einlesen, also direkt hinter dem "ping ". * Die verbleibende Bufferlänge ist 26 - 5 = 21, also Platz für 20 Zeichen und * den Sentinel -> %20s. */ scanf("%20s", szip + 5); /* Dann steht hier in szip beispielsweise "ping www.foo.com". */ system(szip);
-
Danke für eure Antworten, werde alles bei Gelegenheit durchprobieren