Praktische Codierungsmuster
Übliche Implementierungsstrategien für die Hauptfunktion
1. Grundlegende Eingabeverarbeitung
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Verwendung: %s <Eingabe>\n", argv[0]);
return EXIT_FAILURE;
}
printf("Erstes Argument: %s\n", argv[1]);
return EXIT_SUCCESS;
}
Fehlerbehandlungsmuster
Argumentvalidierungstechniken
int main(int argc, char *argv[]) {
// Überprüfung der minimalen Argumentanzahl
if (argc != 3) {
fprintf(stderr, "Fehler: Genau 2 Argumente erforderlich\n");
return EXIT_FAILURE;
}
// Typkonvertierung mit Fehlerprüfung
int wert;
char *endptr;
wert = (int)strtol(argv[1], &endptr, 10);
if (*endptr != '\0') {
fprintf(stderr, "Ungültige numerische Eingabe\n");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Argumentverarbeitungsablauf
graph TD
A[Programmstart] --> B{Argumentanzahl prüfen}
B --> |Nicht ausreichend| C[Verwendung anzeigen]
B --> |Ausreichend| D[Argumente validieren]
D --> |Gültig| E[Hauptlogik ausführen]
D --> |Ungültig| F[Fehlerbehandlung]
E --> G[Ergebnis zurückgeben]
Erweiterte Argumentbehandlungsmuster
Flexible Argumentverarbeitung
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int opt;
char *dateiname = NULL;
int ausführlich = 0;
while ((opt = getopt(argc, argv, "f:v")) != -1) {
switch (opt) {
case 'f':
dateiname = optarg;
break;
case 'v':
ausführlich = 1;
break;
default:
fprintf(stderr, "Verwendung: %s [-f Dateiname] [-v]\n", argv[0]);
return EXIT_FAILURE;
}
}
if (dateiname) {
printf("Datei verarbeiten: %s\n", dateiname);
}
if (ausführlich) {
printf("Ausführlicher Modus aktiviert\n");
}
return EXIT_SUCCESS;
}
Argumentbehandlungsstrategien
Strategie |
Beschreibung |
Anwendungsfall |
LabEx Empfehlung |
Grundlegende Validierung |
Einfache Argumentanzahlprüfung |
Kleine Skripte |
Anfänger |
Typkonvertierung |
Numerische Eingabevalidierung |
Numerische Verarbeitung |
Fortgeschrittene |
Getopt-Verarbeitung |
Komplexe Optionsbehandlung |
CLI-Tools |
Fortgeschrittene |
Best Practices
- Validieren Sie immer Eingabeargumente
- Geben Sie klare Verwendungshinweise
- Verwenden Sie Standardfehler für Fehlermeldungen
- Geben Sie entsprechende Rückgabecodes zurück
- Behandeln Sie potenzielle Randfälle
Fehlercodekonventionen
graph LR
A[EXIT_SUCCESS: 0] --> B[Erfolgreiche Ausführung]
C[EXIT_FAILURE: 1] --> D[Allgemeiner Fehler]
E[Benutzerdefinierte Codes: 2-125] --> F[Spezifische Fehlerbedingungen]
Kompilierung und Ausführung
Kompilieren Sie mit gcc unter Ubuntu:
gcc -o argument_processor main.c
./argument_processor -f input.txt -v