Praktische Codebeispiele
Szenarien der Argumentvalidierung in der Praxis
graph TD
A[Praktische Argumentvalidierung] --> B[Dateiverarbeitung]
A --> C[Rechenwerkzeuge]
A --> D[Konfigurationsverwaltung]
A --> E[Komplexe Befehlszeilen-Schnittstellen]
1. Dienstprogramm zur Dateiverarbeitung
#include <stdio.h>
#include <stdlib.h>
void process_files(int argc, char *argv[]) {
// Validierung: Mindestens 2 Argumente (Programmname und mindestens eine Datei)
if (argc < 2) {
fprintf(stderr, "Verwendung: %s <Datei1> [Datei2] ...\n", argv[0]);
exit(1);
}
// Begrenzung der maximal verarbeitbaren Dateien
if (argc > 6) {
fprintf(stderr, "Fehler: Maximal 5 Dateien erlaubt\n");
exit(1);
}
// Verarbeitung jeder Datei
for (int i = 1; i < argc; i++) {
FILE *file = fopen(argv[i], "r");
if (file == NULL) {
fprintf(stderr, "Fehler: Datei %s kann nicht geöffnet werden\n", argv[i]);
continue;
}
// Dateiverarbeitungslogik
fclose(file);
}
}
int main(int argc, char *argv[]) {
process_files(argc, argv);
return 0;
}
2. Rechenwerkzeug mit flexiblen Argumenten
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Argumentvalidierungsmatrix
typedef struct {
const char *operation;
int min_args;
int max_args;
} OperationValidation;
OperationValidation validations[] = {
{"add", 3, 10},
{"multiply", 3, 10},
{"divide", 3, 3}
};
void validate_calculation_args(int argc, char *argv[]) {
if (argc < 3) {
fprintf(stderr, "Verwendung: %s <Operation> <Zahl1> <Zahl2> ...\n", argv[0]);
exit(1);
}
// Suche nach der passenden Operation
for (size_t i = 0; i < sizeof(validations)/sizeof(validations[0]); i++) {
if (strcmp(argv[1], validations[i].operation) == 0) {
if (argc < validations[i].min_args || argc > validations[i].max_args) {
fprintf(stderr, "Fehler: %s benötigt %d bis %d Argumente\n",
validations[i].operation,
validations[i].min_args,
validations[i].max_args);
exit(1);
}
return;
}
}
fprintf(stderr, "Fehler: Unbekannte Operation\n");
exit(1);
}
int main(int argc, char *argv[]) {
validate_calculation_args(argc, argv);
// Rechenlogik folgt
return 0;
}
Argumentvalidierungsmethoden
Technik |
Beschreibung |
Beispielanwendung |
Exakte Anzahl |
Benötigt eine bestimmte Anzahl von Argumenten |
Divisionsoperation |
Flexibler Bereich |
Zulässt eine variable Argumentanzahl |
Addition, Multiplikation |
Operationsspezifisch |
Validierung basierend auf der spezifischen Operation |
Komplexe Befehlszeilen-Tools |
Erweiterte Validierungsstrategien
- Verwenden Sie strukturierte Validierungsregeln.
- Implementieren Sie operationsspezifische Prüfungen.
- Geben Sie aussagekräftige Fehlermeldungen aus.
- Unterstützen Sie flexible Eingabemuster.
Best Practices für die Fehlerbehandlung
- Validieren Sie Argumente frühzeitig.
- Verwenden Sie aussagekräftige Fehlermeldungen.
- Geben Sie Verwendungshinweise an.
- Bearbeiten Sie verschiedene Eingabe-Szenarien.
LabEx empfiehlt die Entwicklung robuster Argumentvalidierungsmethoden, um zuverlässige und benutzerfreundliche Befehlszeilenanwendungen zu erstellen.