atof problem



  • Wer kennt diese Phänomän

    Ich habe folgenden Code wobei der inhalt von pwc[0] "5" ist

    1 int pwi;
    2 char pwc[20];
    3 pwi=0;
    4 pwi=atof(&pwc[0]);
    5 pwi = pwi + 3;
    

    Das Ergebis von pwi ist 5;

    Wenn ich pwi in eine Schleife setze zählt er bis 5 durch nur rechnen kann man nicht mehr. Lasse ich Zeile 4 weg rechnet er wieder richtig. Was ist hier falsch ? (Ich programmiere in winapi);



  • Hi,

    zeig am Besten mal mit deiner kompletter Schleife.
    So würde ich vermuten, dass pwc[1] nicht 0 ist, was es aber sein muss.



  • ich glaub nicht das pw[1] null sein muss weiler ja nicht einen pointer übergibts sondern nur einen char



  • pwi ist ja auch 5 nur man kann damit nicht mehr rechnen

    Mit itoi geht es auch nicht !



  • was soll hier überhaupt passieren? ich kommentiere es mal so aus wie ich es verstehe:

    mww schrieb:

    1 int pwi;      //definierung einer int-variable
    2 char pwc[20]; //definierung eines char-array größe '20'
    3 pwi=0;        //initialisierung der int-variable mit '0'
    4 pwi=atof(pwc[0]); //neuinitialisierung der int-variable mit '0'
    5 pwi = pwi + 3; //neue neuinitialisierung der int-variable mit '0+3'
    

    was bringt das? stelle man den gesamten, relevanten SC hier rein.



  • spjoe schrieb:

    ich glaub nicht das pw[1] null sein muss weiler ja nicht einen pointer übergibts sondern nur einen char

    Oh, also wenn das wirklich C++ sein soll, dann dürfte das noch nichtmal der Compiler durchgehen lassen.

    Denn solange die Funktion nicht überladen ist, interessiert nicht, was du übergibst, sonder was erwartet wird.
    Und das ist bei ato? ein Nullterminierter String.



  • Sorry die 3 Zeile ist hier flasch. Sie gehört für den einen Fall raus. atoi[&pwc[0]) hab ich flasch gepostet aber ausgebesser. Also konkret ist folgendes:
    ich möchte mit pwc[0] einen Wert der Variablen pwi übergeben. Mit der Variablen pwi möchte ich dann weiterrechnen. (z.b) ist der Inhalt von pwc[0] = "5" wird pwi auch mit 5 gefüllt. Setze ich pwi in eine for-Schleife funktioniert das. Will ich aber mit pwi weiterrechnen funktioniert das nicht.

    MfG
    mww



  • Also vielleicht hilft dir ja das hier weiter:

    int ZuZahl(const char Buchstabe)
    {
      if ((Buchstabe >= '0') && (Buchstabe <='9'))  return Buchstabe - '0';
      else return 0;
    }
    

    So kannst du einzelne chars umwandeln.



  • SeppSchrot schrieb:

    spjoe schrieb:

    ich glaub nicht das pw[1] null sein muss weiler ja nicht einen pointer übergibts sondern nur einen char

    Oh, also wenn das wirklich C++ sein soll, dann dürfte das noch nichtmal der Compiler durchgehen lassen.

    Denn solange die Funktion nicht überladen ist, interessiert nicht, was du übergibst, sonder was erwartet wird.
    Und das ist bei ato? ein Nullterminierter String.

    hab das & ubersehen sorry
    und mir ist das vollkomend klar



  • Habs gelöst 🙂

    Obwohl nach meiner alten version die Variable richtig gefüllt wird, wird sie aber nicht richtig abgeschlossen

    Mit

    char pwt;
    pwt=pwc[0];
    pwi=atoi(&pwt);
    

    funzt es



  • Himmel Herrgott, da wird einem ja schlecht. Bitte informiere dich, was ein null-terminierter String ist und benutze ihn entsprechend.


Anmelden zum Antworten