Wert verkehrt!!



  • Hi!!

    Ich habe mir eine Abfrage geschieben!

    (argv[x+1][0]-'0' > 0 && argv[x+1][0]- '0' < Groesse)
    

    Mit der will ich bezwecken das ich den eingegebenen Wert (bei argc 3) überprüfe ob er zwischen den Grenzen liegt!
    (Groesse = 10)!

    Das heißt der Wert muss >=0 und <=10 sein!
    Jetzt gebe ich aber eine 11 ein und daraus wird komischer weise dann eine 1!!
    Ich denke mal das liegt an der [0] weil er nur das erste Zeichen einließt, kann das sein???

    Kann mir einer bei dem Problem helfen???
    Man könnte mein Vorhaben auch sicherlich anders lösen,oder??



  • Ich denke mal das liegt an der [0] weil er nur das erste Zeichen einließt, kann das sein???

    Ja

    In C gibt es atoi und itoa um strings in interger zu konvertieren und zurück



  • Thes-One schrieb:

    Das heißt der Wert muss >=0 und <=10 sein!

    Nein, >0 und <10.

    Thes-One schrieb:

    Jetzt gebe ich aber eine 11 ein und daraus wird komischer weise dann eine 1!!

    Naja, du betrachtest ja nur ein einzelnes Zeichen, nicht den gesamten String.

    Thes-One schrieb:

    Ich denke mal das liegt an der [0] weil er nur das erste Zeichen einließt, kann das sein???

    Exakt.

    Thes-One schrieb:

    Kann mir einer bei dem Problem helfen???
    Man könnte mein Vorhaben auch sicherlich anders lösen,oder??

    Schau dir mal atoi() und/oder strtol() an.

    Edit: Und gewöhn dir anständige Topics an!



  • bär schrieb:

    In C gibt es atoi und itoa um strings in interger zu konvertieren und zurück

    itoa() ist nicht Standard C.



  • Was gibt atoi den zurück wenn garkeine Zahl im String steht!

    Also-->

    Eingabe : -z b

    atoi(argv[3]) === ???



  • Proier es aus, lies die Hilfe.



  • Mir fällt auch gerade auf das das ja auch nicht wirklich das wahre ist!
    wenn man 12a eingibt wird 12 gespeichert obwohl das keine legale Zahl ist!

    Das a wird einfach weggeschnitten!



  • Man könnte sich auch strtol() anschauen, welches ich wunderbarerweise auch schon erwähnt habe.



  • Sry hab ich nicht gesehen!
    Bring aber eh nix da strtol() genauso reagiert!!

    Eingabe --> 123abc
    strtol(Eingabe) = 123

    Eingabe --> ABC123
    strtol(Eingabe) = error

    Ich suche eine Funktion die bei (123abc) auch einen Fehler bekommt und auch wirklich nur einen String aus Integers umwandelt!!

    Gibt es soetwas nicht??



  • Du musst halt auch den 2. Parameter auswerten. So wird das nix wenn du gerademal 5 Minuten probierst...



  • Den 2.ten Parameter???

    Ich bin total neu in C, ich weiß noch nicht wirklich wie das alles Funktioniert!
    Ich werd es mal Probieren aber vielleicht wärst du so gütig und könntest mir ein Beispiel geben?? 👍





  • Also wenn ich das richtig verstehe müsste das bei mir so aussehen!

    strtol(argv[x+1],endp,10);

    Also muss ich dann endp überprüfen ob es leer ist --> wenn ja waren in argv[x+1] nur integer Werte --> wenn nein waren halt ungültige Zeichen drin!

    Hab ich das richtig verstanden???



  • Thes-One schrieb:

    Hab ich das richtig verstanden???

    warum probierst du's nicht einfach aus?
    wenn dich das vorhandene 'strtol' überfordert, dann schreib dir doch eine eigene variante. das ist nicht schwer. hinweis: *wert = wert * 10 + string++ - '0'


Anmelden zum Antworten