leggere delle domande da un file e piazzarle in un array

Ho la necessità di mettere delle domande su un file di testo (che sarà sulla scheda sd), ora mi è stato consigliato di far leggere ad arduino queste domande dal file e inserirle in un array, ma come la faccio fare questa operazione?

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

@jackerjk: ti rammento che sei su una piccola MCU che ha solo 2KB di SRAM ... quindi ... fai bene i conti perché, ogni singola lettera di ogni singola domanda che leggi dalla SD, occupa un byte e ... riempire con delle stringhe la SRAM è un'attimo ... ::slight_smile:

Premesso questo, SRAM permettendo, non devi fare altro che dichiarare un array di 'char' delle dimensioni adatte a contenere le domande (quindi, ogni riga del massimo numero di caratteri della più lunga domanda x N righe quante sono le domande) e leggere dalla SD riga per riga e copiarla nel giusto elemento dell'array.

A seconda di come sono le domande (lunghezza di ciascuna domanda simile o dissimile dalle altre) in questo modo potresti aver un enorme spreco di memoria e quindi, un altra soluzione, potrebbe essere l'uso, al posto delle stringhe classiche del 'C' di un array di String tipico del 'C++' che vengono allocate dinamicamente ... con le problematiche di cui occorre però poi tenere conto quando si alloca dinamicamente della memoria.

In ogni caso, entrambe le soluzioni ti portano a rischio esaurimento SRAM ... quindi, come ti ho detto all'inizio, verifica bene quante sono queste domande e quanti bytes occupano.

Guglielmo

gpb01:
@jackerjk: ti rammento che sei su una piccola MCU che ha solo 2KB di SRAM ... quindi ... fai bene i conti perché, ogni singola lettera di ogni singola domanda che leggi dalla SD, occupa un byte e ... riempire con delle stringhe la SRAM è un'attimo ... ::slight_smile:

Premesso questo, SRAM permettendo, non devi fare altro che dichiarare un array di 'char' delle dimensioni adatte a contenere le domande (quindi, ogni riga del massimo numero di caratteri della più lunga domanda x N righe quante sono le domande) e leggere dalla SD riga per riga e copiarla nel giusto elemento dell'array.

A seconda di come sono le domande (lunghezza di ciascuna domanda simile o dissimile dalle altre) in questo modo potresti aver un enorme spreco di memoria e quindi, un altra soluzione, potrebbe essere l'uso, al posto delle stringhe classiche del 'C' di un array di String tipico del 'C++' che vengono allocate dinamicamente ... con le problematiche di cui occorre però poi tenere conto quando si alloca dinamicamente della memoria.

In ogni caso, entrambe le soluzioni ti portano a rischio esaurimento SRAM ... quindi, come ti ho detto all'inizio, verifica bene quante sono queste domande e quanti bytes occupano.

Guglielmo

Eh infatti temevo proprio questo, ma se facessi un ciclo con una variabile che assume ogni giro una domanda diversa?
Spero di essermi spiegato.
Giacomo