Strings verbinden geht nicht.



  • Hallo ich habe mir ein kleines Programm geschrieben das mir als erstes
    meine Kommazahl aufteilt in Vor und Nschkommastelle.Anschliessend
    wandele ich diese beiden Int Zahlen in ASCII um.Nun möchte ich die
    einzelnen Strings miteinander verbinden.Dies funktioniert bis zu meinem
    letzten strncat.Da überschreibt mein zweiter String meinen ersten statt
    sie zu verbinden.Kann mir irgend jemand sagen wo mein Fehler liegt?

    void GetFunktion2()
    {
      //1.0
      float Zahl =256.8;
      char string[8];
      char buf[2];
    
      Uint16 NachkommaStelle =0;
      Uint16 Vorkommastelle =0;
    
      Float_To_INT(Zahl,&NachkommaStelle,&Vorkommastelle);
    
      INT_To_ASCII(Vorkommastelle,3,string);
      INT_To_ASCII(NachkommaStelle,1,buf);
    
      strncat(string,".",1);
      strncat(buf,",",1);
      strncat(string,buf,2);
    
      asm ("      ESTOP0");
    }
    


  • Hab meinen Fehler gefunden.Mein Array buf ist zu klein.Das abschliessende \0 kann nicht gespeichert werden.



  • Du mußt auf den Platz aufpassen!
    Buf ist nur zwei Bytes klein, das reicht für eine Nachkommastelle und die "terminating zero". Ein Komma ankleben geht da eh schon nicht.
    Mach mal das richtig und erzähl, was passiert.

    Edit: Ui, ich war zu langsam 😞


Anmelden zum Antworten