Le funzioni stringa operano sulle stringhe e ritornano l’indirizzo del buffer di memoria che contiene la stringa risultato. Quindi è evidente che DEVONO appoggiare su di un buffer di memoria i dati quindi hanno tutte una dimensione massima. Poi certo su sistemi con molta memoria a disposizione il buffer di appoggio può essere molto grande.
Nei sistemi SlimLine potendo gestire le operazioni stringa su 3 diverse Tasks concorrenti abbiamo dovuto istanziare 3 diversi buffers di appoggio ed essendo un sistema basato su di un microcontrollore dove la memoria RAM non è molto grande abbiamo posto un limite a queste stringhe.
Posso essere daccordo con te che il limite di 100 caratteri (99+tappo) è poco ed adesso stiamo vedendo di aumentare il valore, ma non è possibile avere un valore infinito, quindi prima o poi si cozza con la dimensione predefinita.
Per evitare il limite di dimensione puoi utilizzare funzioni che operano con i puntatori, la CONCAT si può sostituire con la SysVsnprintf, dove passi alla funzione il buffer che contiene il risultato e la sua dimensione.