Ich habe vor kurzem diese Seite und die Tutorials entdeckt und aufgrund meiner Vorkenntnis aus anderen Programmiersprachen fiel mir das Verständnis vieler Dinge leicht.
Nun habe ich allerdings ein kleines Problem bei der Parameter Übung.
Das Problem äußert sich darin, dass ich, aufgrund der Tatsache, dass char*argv[] , so wie ich es verstanden habe, auf eine Menge an char verweist (auch CSTRING), die Funktion isdigit() nicht anwenden kann.
Das Grundprinzip von isdigit() ist mir klar, jedes char des Strings muss einzeln überprüft werden.
Jedoch kommt es zu Problemen wenn ich z.B: char text[] = argv (i ist hier bei der string der beim Aufruf übergeben wird) definieren will.
Der Bisherige Quellcode sieht wie folgt aus:
Code: Alles auswählen
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
void substraction (int argc, char **argv) //Subtraktionsfkt. mit Ausgabe (es wird ein int und ein Zeiger übergeben)
{
int i=3; // Variabel Initialisierung ( hier wir 3 gewählt, da wir das 2. Element in sum direkt initialisieren )
int sum = atoi(argv[2]); // Hier wird das 2 gewählt, weil das 3. Textarray ( 1. Zahl als Anfangspkt. für die Differenz erwählt wird )
for(;i<argc;i++) // Substraktionsschleife
sum=sum-atoi(argv[i]); //
printf("Die Differenz lautet: %d\n",sum); // Ergebnisausgabe
}
void add (int argc, char **argv) // Additionsfkt. mit Ausgabe ( es wird ein int und ein Zeiger übergeben)
{
int sum = 0; // Variablendeklaration + Initialisierung
int i=2;
for(;i<argc;i++) // Zählschleife mit Start im 3. Speicherarray, da im 1. [0] Pfad liegt und im 2. [1] die Rechenart
sum=sum+atoi(argv[i]); // Aufsummierung der gültigen Argumente
printf("Die Summe lautet: %d. \n",sum); // Ausgabe der Addition
}
int main( int argc, char* argv [] ) // Main mit Übernahmefkt.
{
if (argc < 4) // Wächter, dafür da, dass die min. Zahl an Argumenten vorhanden ist.
{
printf("\n Es werden mindestens 3 Argumente erwartet.\n\n"); // Hilfetext
return EXIT_SUCCESS;
}
if(strcmp (argv[1], "-addition") == 0) //Stringueberpruefung des 2.[1] Argumentes (Textarrays)
add(argc, argv); // Fkt. Call
else if (strcmp ( argv[1],"-substraction") == 0) // Stringueberpruefung des 2. [1] Argumentes (Textarrays)
substraction(argc,argv); // Fkt. Call
else // wird gewählt wenn 1. Parameter falsch
printf ("\n 1. Parameter inkorrekt.\n\n Moegliche Parameter: -addition ; -substraction\n -addition addiert alle darauffolgenden mit Leertaste getrennten Ganzzahlen\n -substraction subtrahiert alle darauffolgenden mit Leertaste getrennten Ganzahlen von der 1. an\n\n");
/*Erklärung im else als Hilfestellung für den Anwender.*/
return EXIT_SUCCESS;
}
Mit freundlichen Grüßen
nix_fix