Programm start mit null oder einem parameter und ein paar zahlen

F

Furious Dragon

Grünschnabel
hi
mein problem
denke für euch nen kleines für mich ein großes
bin dabei C zu lernen und schreibe ein programm was mit ein paar parametern gestartet werden kann
z.B:-s für summe aller zahlen
zusätzlich sollen noch ne belibige menge zahlen mit eingelesen werden können dann sieht der programm aufruf in etwa so aus :
dateiname -s 1 2 3 4

und ausgegeben soll dann eine 10

wie kann ich das machen das dass programm so funktioniert

also ich lese die parameter über argv in ein array (das klappt)
sieht ca so aus:
for (i=0;i!=argc;++i)
{
assert(i>=0 && i<MAX_NUMBERS);
werte=argv;
}


hab da dann aber alles in char* drin stehen

frage 1:
wie schaff ich das dass ich die zahelen vllt in ein zweites array schreibe aber dafür als int. damit ich damit weiter rechnen kann?

frage 2:
wie kann ich verhindern das mehr als 1 parameter angegeben wird bzw wenn das der fall is eine fehlermeldung ausgeben?

danke für jede hilfreiche antwort

Olli
 
Danke für die schnelle Antwort
zu 1. das hat mir weitergeholfen
zu 2. leider weiß ich nich wie ich mit getopt arbeite werd mir mal das c pdf durchlesen in der hoffnung dazu was zu finden

is argc nich dafür da um die anzahl der parameter auszugeben?
wenn ja dann hilft es mir ja nich wirklich weiter weil eine optionale anzahl an zahlen angegeben werden soll...

aber trotzdem danke für die hilfe!!!!
 
Wieso? Du Prüfst, z.b. dass es mind 2 sein müssen. wenn nicht, dann exit(1);
und für die forschleife wirst du es auch brauchen, denn du kannst mit 1 anfangen, aber wo aufhören? wenn du keine anderen Posi hast, dann mit argc.
 
Ich wuerde Dir empfehlen, mit strtol zu arbeiten (bzw. strtod). Damit kannst Du Fehler abfangen, u.a. auch den Fall, dass mehr als ein 'Parameter' angegeben wird (streng genommen sind auch die Zahlen Parameter, wuerde ich mal sagen). Deine Schleife, die die Elemente aus argv in Zahlen umwandelt sollte dann auch besser bei i=2 anfangen, da argv[0] den Programmnamen und argv[1] die Option ('-s') enthaelt.

Wenn Du willst, dass der Benutzer das '-s' an irgendeiner Stelle einstraeuen darf, wird es m.E. nach wesentlich komplizierter - es ist immer schwer, sich auf die moeglichen Denkweisen des Benutzers einzustellen und (fuer den Anfang) einfacher, eine gewisse Syntax zu erzwingen.
 

Ähnliche Themen

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Hilfe bei Shell-Scripting

C HTTP request

bash: Fehlermeldung und Werte in Array sortieren?

GB-errinerung in QT hat Speicherzugrifsfehler

Zurück
Oben