inputs_param
This is an old revision of the document!
Table of Contents
Programmparameter
Die einfachste Möglichkeit Benutzereingaben zu bekommen sind Programmparameter. Das geschriebene Programm wird direkt mit Parametern gestartet. Wichtig ist die korrekte Anzahl an Parametern und dass jeder Parameter separat geprüft wird.
Beispiele
Die folgenden Beispiele lesen einen Namen und Alter als Kommandozeilenparameter ein, prüfen die Parameter auf Korrektheit und geben Sie dann wieder aus.
Geprüft wird, ob der Vorname mit einem Grossbuchstaben startet und sonst nur Kleinbuchstaben enthält und ob das Alter zwischen 1 und 99 ist.
Bash
#!/bin/bash # definieren der beiden benötigten Funktionen function checkString { case $1 in # ersten Parameter der Funktion prüfen [[:upper:]] | [[:upper:]][[:lower:]]* ) echo "$1" ;; *) echo "" ;; esac } function checkNumber { case $1 in # ersten Parameter der Funktion prüfen [1-9] | [1-9][0-9] ) echo "$1" ;; *) echo "" ;; esac } # Prüfen, ob Anzahl der Parameter korrekt ist if [ $# -ne 2 ]; then echo "usage: $0 [name] [age]" exit fi name=$(checkString $1) # ersten Parameter des Programms als Parameter für checkString verwenden age=$(checkNumber $2) # zweiten Parameter des Programms als Parameter für checkNumber verwenden if [ -z $name ]; then # Prüfen, ob Name leer ist echo "Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten" exit 1 fi if [ -z $age ]; then # Prüfen, ob Alter leer ist echo "Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein" exit 1 fi # Ausgabe echo "Dein Name ist $name und du bist $age Jahre alt"
C++
#include <iostream> bool checkName(char* name) { int len = 0; // die Länge des nullterminierten Strings herausfinden while(name[len] != 0) len++; // ist der String lang genug? if(len == 0) return false; // ist das erste Zeichen ein Grossbuchstabe? if(name[0] < 'A' || name[0] > 'Z') return false; // sind alle anderen Zeichen Kleinbuchstaben? for(int i = 1; i < len; i++) { if(name[i] < 'a' || name[i] > 'z') return false; } // sind alle Bedingungen erfüllt? return true; } bool checkAge(char* age) { int len = 0; // die Länge des nullterminierten Strings herausfinden while(age[len] != 0) len++; // prüfen der Länge des Parameters if(len == 0 || len > 2) return false; // prüfen, ob mit 1-9 begonnen wird if(age[0] < '1' || age[0] > '9') return false; // prüfen, ob alle anderen Zeichen zahlen sind for(int i = 1; i < len; i++) { if(age[i] < '0' || age[i] > '9') return false; } // sind alle Bedingungen erfüllt? return true; } int main(int argc, char* argv[]) { // prüfen, ob die Anzahl der Parameter stimmt. if(argc != 3) { // programmname zählt dazu printf("%s%s%s", "Usage: ", argv[0], " [name] [age]\n"); return 1; } // sprechendere Namen verwenden char* name = argv[1]; char* age = argv[2]; // den ersten Parameter prüfen if(!checkName(name)) { printf("%s", "Der Name muss mit einem Grossbuchstaben beginnen und darf sonst nur Buchstaben enthalten\n"); return 1; } // den zweiten Parameter prüfen if(!checkAge(age)) { printf("%s", "Das Alter muss mit 1-9 beginnen, darf nur Zahlen enthalten und maximal 99 sein\n"); return 1; } // Ausgabe printf("%s%s%s%s%s", "Dein Name ist ", name, " und du bist ", age, " Jahre alt\n"); }
inputs_param.1499082902.txt.gz · Last modified: 2017/07/03 13:55 by gg