ich versuche schon seit einiger Zeit in PicoC, mehrere Zahlenwerte (vom analogen Eingang oder intern erzeugt) in einen String zu schreiben und über den Textausgang des Programmbausteins auszugeben.
Bisher scheitere ich immer daran, dass ich zwar die Werte mit sprintf in ein Char[ ] zusammenstellen kann, bei der wiederholten Durchführung bleibt aber der Text der letzten Durchgänge erhalten. Verschiedene Versuche mit free() oder NULL-Definition haben bisher nicht funktioniert und mir fällt jetzt nichts mehr ein...
Also an die PicoC-Cracks unter euch: Wie bekomme ich einen String sauber zusammengeflickt, ohne SpeicherLeaks oder Artefakte?
Anbei noch mein Beispiel-Code:
char szBuffer[128];
float f1,f2,f3,f4;
float Test[4];
int nEvents;
while(TRUE)
{
nEvents = getinputevent();
if (nEvents & 0xe)
{
Test[0] = getinput(0);
Test[1] = getinput(1);
Test[2] = getinput(2);
Test[3] = Test[0]+Test[1]+Test[2];
for (int i=0;i<4;i++)
{
sprintf(szBuffer,"%s;%f",szBuffer,Test[i]);
}
setoutput(0,Test[3]);
//sprintf(szBuffer,"%f * %f + %f = %f",Test[0],Test[1],Test[2],Test[3]);
setoutputtext(0,szBuffer);
printf(szBuffer);
*szBuffer=NULL;
free(szBuffer);
}
sleep(100);
}
Kommentar