Problematik "Parameter"

zyclop

Erfahrenes Mitglied
Ich habe die Problematik das ich ein Programm schreibe welche Parameter verwendet. Genauer gesagt geht es um ein Shutdown Programm. Zuerst kommt eine Auswahlabfrage und danach sollte ich das umsetzten können.

Jedoch wie soll ich das machen.

Mein Vorschlag mit goto , Nachteil ist einfach der SpaghettiCode

1.Frage ) Wie kann ich einer Variable einen Text zuweisen

2.Frage )"Hat nix mit oben zu tun" Als Was muss ich die Variable deklarieren um eine IP & Text in eine Variable speichern zu können.

Hier mal mein bisheriges Programm...

Code:
/*******************************************************************************
    FILE : shutdown.c


    USED BY
    ----------- / C-Kurs / Grundlagen
    
    BESCHREIBUNG
    
   ------------------------
*******************************************************************************/
// Import
#include <stdlib.h>
#include <stdio.h>
// Konstanten
#define G
// VARIABLEN 
char*   Ip_name;           // IP-Adresse oder Computername       
int     Eingabe_menu;      // Eingabe des Gewünschten schrittes  
int     Menu_abfrage;      // Abfrage sicherstellen Ja oder Nein 
int     Counter = 10;      // Counter um bei Falscheingabe die Zeit zu vertögern
//Hauptprogramm
int main()
 {
  system("Title Shutdown (C) by );
  
  main:
  //Anzeige Verbesserungen
  system("cls");         //Leert den Bildschirm*/
  system("Color E");     //Der Text wird nun in gelb ausgegeben*/
  
  //BILDSCHIRMAUSGABE 
  printf("Dieser Batch ermoeglicht das Runterfahren oder Neustarten eines Computers\n");
  printf("in ihrem LAN.\n\n");

  //AUSWAHLMENUE 
  printf("Auswahlmenu\n");
  printf("-----------\n");
  printf("[1] --- /i 		Ermoeglicht eine Grafische Oberflaeche\n\n");
  printf("[2] --- /s 		Herunterfahren\n\n");
  printf("[3] --- /s /c /t xxx 	Herunterfahren, Grund, Zeit in Sekunden\n\n");
  printf("[4] --- /r		Neustart\n\n");
  printf("[5] --- /r /c /t xxx 	Neustart, Grund, Zeit in Sekunden\n\n");
  printf("[6] --- /a		Abbrechen des Herunterfahren oder Neustartes\n\n");
  printf("[7] --- Deinstallation  Loescht alle Programmdateien\n\n");
  printf("[0] --- EXIT		Beendet das Programm\n\n\n");
  printf("Waehlen sie [1], [2], [3], [4], [5], [6], [7] oder [0]\n\n");
  printf("Eingabe =");
    
  //EINGABE DES GEWÜNSCHTEN SCHRITTES 
  scanf ("%i",&Eingabe_menu);
  
  //Abfrage zur Überprüfung ob die Eingabe kleiner als 7 ist
  if (Eingabe_menu <=7) {
       printf("<= 7");
  }   
   else {
     goto main;
   }
  
  //EINGABE: IP ODER COMPUTERNAME 
  scanf("%s",&Ip_name);
  
  //Programmende & Kontrolle des Programmablauf
  system("PAUSE");	// nur während Entwicklungsphase !! 
  return 0;
}
 
Zuletzt bearbeitet:
zyclop hat gesagt.:
Ich habe die Problematik das ich ein Programm schreibe welche Parameter verwendet. Genauer gesagt geht es um ein Shutdown Programm. Zuerst kommt eine Auswahlabfrage und danach sollte ich das umsetzten können.

Jedoch wie soll ich das machen.

Mein Vorschlag mit goto , Nachteil ist einfach der SpaghettiCode
Dazu gibt's in C diverse Schleifenkonstrukte
Code:
do {
  ...
} while (Eingabe_menu > 7);

zyclop hat gesagt.:
1.Frage ) Wie kann ich einer Variable einen Text zuweisen
Code:
char var[] = "text";
zyclop hat gesagt.:
2.Frage )"Hat nix mit oben zu tun" Als Was muss ich die Variable deklarieren um eine IP & Text in eine Variable speichern zu können.
Eine IP der Form "xxx.xxx.xxx.xxx" ist Text. Oder meinst du die umgerechnete Repräsentation als Integer? Dann könntest du eine Struktur bzw. Union verwenden.

Gruß
 
Du müßtest nur den String für den system()-Aufruf mit snprintf oder strncat zusammenbasteln.

Bsp:
Code:
char cmd[256] = "shutdown ";
char ipaddr[] = "123.456.1.2";

strncat(cmd, ipaddr, sizeof(cmd)-strlen(cmd)-1);

system(cmd);

Gruß
 
zyclop hat gesagt.:
:suspekt: verstehe nix was du da machst
Das is ja nich so gut... ;)

Als erstes hab ich die Variable cmd definiert, als einen String der max. 255 Zeichen (plus das NUL Zeichen) enthalten kann. Den String hab ich vorbelegt mit dem Wert "shutdown " - das soll ja dann nachher das Kommando sein welches aufgerufen wird.

Dann hab ich (der Einfachheit halber) den String ipaddr definiert (der ja dann bei dir von der Kommandozeile eingelesen wird) und mit einem Fantasiewert belegt.

Dann ruf ich die Funktion strncat aus der C Standardbibliothek auf, die den zweiten Paramater an den ersten Parameter dranhängt - wenn noch genug Platz da ist.

Jetzt ist im String cmd der Wert "shutdown 123.456.1.2" gespeichert. Mit allen anderen Parameter mußt du auf die gleiche Weise verfahren.

Gruß
 
Ich habe nun die Variable als Char deklariert

Code:
char    Ip_name[16];         // IP-Adresse oder Computername

und hier lese ich sie ein

Code:
 //Eingabe: IP-Adresse oder Computername 
       printf("\nGeben sie bitte die IP-Adresse oder den Computernamen ein: ");
        scanf("%c",&Ip_name);
        printf("%c", Ip_name);


Jedoch die Ausgabe ist voll KACKE...

Ausgabe

Code:
Dieser Batch ermoeglicht das Runterfahren oder Neustarten eines Computers
in ihrem LAN.

Auswahlmenu
-----------
[1] --- /i              Ermoeglicht eine Grafische Oberflaeche

[2] --- /s              Herunterfahren

[3] --- /s /c /t xxx    Herunterfahren, Grund, Zeit in Sekunden

[4] --- /r              Neustart

[5] --- /r /c /t xxx    Neustart, Grund, Zeit in Sekunden

[6] --- /a              Abbrechen des Herunterfahren oder Neustartes

[7] --- Deinstallation  Loescht alle Programmdateien

[0] --- EXIT            Beendet das Programm


Waehlen sie [1], [2], [3], [4], [5], [6], [7] oder [0]

Eingabe = 4

Geben sie bitte die IP-Adresse oder den Computernamen ein: `Drücken Sie eine bel
iebige Taste . . .

Er fragt mich garnicht das " ` "" Zeichen macht der PC kein plan
 
Zurück