
-----------------------------------
Sorin Sfartz
20 Oct 2018 15:33


-----------------------------------
Ah. Nu imi dadusem seama despre ce parte vorbeai. Ok. O sa schimb stringul ala intr-un array de bytes precum in var.3. E mai sigur asa intr-adevar. Dar asta inseamna ca trebuie sa retestez totul.

"In C, unde apare primul '\0' intr-un string, acolo se considera terminat. Asta n-are treaba cu compilatorul, ci cu conventiile din bibliotecile standard. "

Stiu asta. Este elementar. Totusi are treaba si cu compilatorul. In exemplele tale compilatorul "stie" ca in primul sir este un null, pentru ca tu ai initializat sirurile in felul ala. Pe masura ce concatenezi sirurile se vor altera tot mai mult pentru ca compilatorul "stie" de acel null si nu aloca resurse pentru ce e dupa el. Insa daca compilatorul e instruit doar sa primeasca caractere pe portul serial, nu va sti si nu ii va pasa de ceea ce vine pe acolo. Poti acumula ce vine in orice fel de string si sirul nu va fi corupt pt ca compilatorul aloca corect spatiu pentru insiruirea de caractere ce vine de la serial. De asta primele 2 variante functioneaza totusi ok, chiar si cu protocolul acela aiurit.
Un astfel de sir primit pe portul serial va fi considerat "terminat" la null, doar de functiile de manipulare a stringurilor care cauta astfel de caractere. Insa in programele mele nu exista astfel de functii, pt ca programul este doar un banal bridge de transfer de date.
