Académique Documents
Professionnel Documents
Culture Documents
Descendre
Pages: [1]
Sujet: comment lire le fichier sd ligne par ligne (lu 14508 fois)Sujet Précédent - Sujet Suivant
enregistreur
Débutant
Messages: 46
Karma: 0 [ajouter]
Membre Edison
Messages: 2206
Karma: 312 [ajouter]
Arduino roches
SdFat sd;
SdFile file;
Voici la sortie:
Citation
Terminé
enregistreur
Débutant
Messages: 46
Karma: 0 [ajouter]
Membre Edison
Messages: 2206
Karma: 312 [ajouter]
Arduino roches
Cependant, rien ne vous empêche d'implémenter votre propre version de fgets (), maintenant que vous
avez été frappé par un indice par 4.
enregistreur
Débutant
Messages: 46
Karma: 0 [ajouter]
Code: [Sélectionner]
void SendLogFile()
{
int stringIndex = 0;
char inputString[BUF_DIM];
char inputChar;
sprintf(directory,"%04d",year());
sprintf(fileName,"%02d%02d%02d_%01d.csv",year()%100,month(),day(),fileCounter);
sprintf(fullName, "%s/%s", directory, fileName);
if (SD.exists(fullName))
{
logFile = SD.open(fullName);
if (logFile)
{
inputChar = logFile.read(); //get one byte from file
while (inputChar != 'eof') // if char not eol
{
if (inputChar != '\n') // if char not eol
{
inputString[stringIndex] = inputChar; //store it
stringIndex++; // increment where to write next
}
else
{
mailClient << inputString << endl; // print de eerste tot de i de
character uit
stringIndex=0; //clear value for next line
}
inputChar = logFile.read(); //get one byte from file
}
}
}
}
L'opérateur ostream attend un tableau de caractères terminé par NULL. Votre tableau de caractères n'est
PAS terminé par null. Répare ça!
enregistreur
Débutant
Messages: 46
Karma: 0 [ajouter]
Où suis-je censé arrêter de lire? L'endroit où vous devez arrêter la lecture est indiqué par un point ou un
point d'interrogation à la fin de chaque phrase.
Les fonctions qui opèrent sur des chaînes, qui ne sont rien de plus que des tableaux de caractères, doivent
savoir quand arrêter le traitement des données du tableau. Ils doivent le savoir car ils ne peuvent PAS
déterminer la taille du tableau ET la taille du tableau n'est pas une indication de la quantité de données
utiles dans le tableau.
Ils savent où arrêter le traitement des données car ils trouvent le «signe de ponctuation» approprié. Dans le
cas des chaînes C, ce "signe de ponctuation" est un NULL (qui est un mot fantaisie pour zéro).
inputString [stringIndex] = inputChar; //le ranger
stringIndex ++; // incrémenter où écrire le prochain
inputString [stringIndex] = '\ 0'; // ajoute un NULL
Code: [Sélectionner]
while (inputChar != 'eof') // if char not eol
devrait être:
Code: [Sélectionner]
while (inputChar != -1)
et le type de inputChar doit être int, pas char.
Débutant
Messages: 46
Karma: 0 [ajouter]
IMPRESSION
Monter
Pages: [1]