se si usa String all'interno di una void (senza che String sia quindi una variabile globale) si crea lo stesso il problema del gar.coll. ? (chiedo perchè non ricordo)
in ogni caso, come si potrebbe gestire la client.println senza usare String ma utilizzando char senza che ci sia errore nella visualizzazione?
non mi ricordo chi storicamente diceva che "per battere il nemico devi conoscerlo a fondo" .
la mia era una richiesta "culturale" ...
debbo però confessare che fino ad un anno fa usavo frequentemente String su un esp32 e dopo giorni di funzionamento che chiamavano la routine eventualmente sospetta ogni secondo, non l'ho mai visto incasinarsi.
Spesso serve un pò di fortuna, nella vita ...
ribadisco : era e rimane una richiesta di alunno. Io non voglio batterlo, voglio capire.
se ero sgamato non avrei chiesto.
Chi è sgamato mi spieghi, come farebbe un maestro alle elementari.
lasciamo perdere il carattere, ognuno di noi ha i suoi problemi col comunicare.
però se io entro in un forum e chiedo "perchè questo ?", non è risolutivo trovare una "soluzione" che dica "prova e vedi" .... semplicemente perchè non è una soluzione.
magari sarebbe meglio dire "perchè abc e anche d".
poi anche "prova e vedi .... "
ok ... grazie in ogni caso e comunque per il tempo dedicatomi
... considera che stai parlando di un oggetto che ha un bel po' si SRAM (l'IDE riporta 327680 bytes ... pensa ai 2048 bytes di Arduino UNO e ti rendi conto) e che, prima che si presenti il problema descritto QUI, può passare moooolto tempo o non capitare mai.
si Guglielmo, prima di scrivere questo post avevo letto quel thread ma non mi sembra di aver trovato una risposta, o forse mi è sfuggito.
O quanto meno la risposta potrebbe essere : si, anche se locale, String crea zozzeria. Eventualmente usaSafeString ; ma io non vorrei usare nè l'una nè l'altra, essendo ormai un ostinato utilizzatore di char che però, in alcuni casi necessita - per mancanza di tempo da dedicare - dell'uso di String.
Volevo capire meglio la soglia dei rischi di collasso ...
... veramente la mia risposta NON era un invito ad usare SafeString né, tantomeno, String, ma era proprio la spiegazione del perché non ti è successo in relazione a come funziona String (spiegato nel link che avevo messo)!
hai in mano i dati e li sbatti sulla seriale nell'ordine che ti serve, che te ne fai di archiviarli e poi stamparli? li stampi direttamente e ti liberi di storie inutili
come ho scritto ieri, il C è semplicità
se non ci si arriva....
Perché con la sprintf puoi anche controllare il formato dei dati da inserire, e comunque a priori non puoi sapere cosa deve scrivere, dove memorizza i suoi dati, e come ce li ha. Il mio era un discorso generico (a parte che una variabile buffer magari globale può essere utilizzata in tutto il resto del codice -che né io né te conosciamo-), ovviamente ognuno è libero di fare quello che vuole, ma se non conosceva la sprintf() magari potrebbe essergli utile anche sapere della sua esistenza, senza fare i "talebani del C".
Chiaro ora?
Considerando che @fotosettore sta usando un ESP32 dove la classe Serial ha il metodo printf() già di suo, non serve nemmeno il buffer (anche se comunque un buffer di mezzo c'è ugualmente nel metodo, ma almeno è trasparente per l'utente finale).