Informazioni generiche sul codice .....

La variabile nome file è defnita come char * nomefile ="gpslog00.txt"

   for (int i = 0; i < 100; i++)
    { nomeFile[6] = '0' + i/10;
      nomeFile[7] = '0' + i%10;
      if (! SD.exists(nomeFile)) { break; } 
    }

non capisco come faccia ad aggiungere sempre un'unità al nome del file.. se questo esiste già...
in particolare, non capisco questa istruzione:
nomeFile[6] = '0' + i/10; ... cioè sostitusce al carattere in posizoine 6 ... 0 + i/10 ... bho!!!!

ed ancora di più questa:
nomeFile[7] = '0' + i%10; ... cioè sostitusce al carattere in posizoine 7 ... 0 + i%10 ... ma che significato ha il segno %...

qualcuno può darmi una spiegazione????
Krazie

Immagine che il nome sia qualcosa tipo XXXXXX00, XXXXXX01 ecc...

nomeFile[6] = '0' + i/10;

Questo codice altro non fa che gestire le DECINE del numero che aggiunge alla fine del file.
Come fa a farlo? Semplicemente perché lo 0 racchiuso fra apici SINGOLI, quindi '0' viene interpretato come char, ossia un tipo di dati che corrisponde al valore ASCII del carattere. Quindi prende i/10, cioè le decine di i e lo somma a 0.

nomeFile[7] = '0' + i%10;

Questo qui fa il MODULO, ossia il resto della divisione con 10 del valore di i. Il modulo è rappresentato dal simbolo %.

Facciamo un esempio: il ciclo parte con i=0. Quindi il nome del file è XXXXXX00. Se non esiste lo salva. Se esiste incrementa i.
Arriviamo ad esempio a i=11.
i/10=1
i%10=1
quindi il nome del file è XXXXXX11

Grazie Leo.. avevo intuito ....
Non mi era chairo che i/10 .. poteva rappresentare le decine, prendendo la parte intera,..... e non sapevo che % rappresenta il modulo...

e se volesimo fare una numerazione a tre cifre.. per esempio fino a 999 come dovremmo fare?

o sto chiedendo troppo? ..... speriamo che non legga Maurotec :wink: ... scherzo....

sto riprendendo arduino dopo un anno.. la mia esperienza con la programmazione risale al 1996 con il quick basic di microsoft ..... sto studiacchiando un poco di C adesso per sperimentare arduino...

Grazie di nuovo ....

Prova così:

for (int i = 0; i < 100; i++) {
    nomeFile[5] = '0' + i/100;
    nomeFile[6] = '0' + i/10;
    nomeFile[7] = '0' + i%10;
    if (! SD.exists(nomeFile)) { break; } 
}

Però i nomi diventano XXXXX000, cioè 5 caratteri e 3 numeri.