system() in Verbindung einer variablen



  • Hallo allerseits,
    ich bin relativ neu in C, verzeiht mir deshalb wenn ich keine Ahnung habe 😉 Ich 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 und strcat 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 😉


Anmelden zum Antworten