Bonjour,
Je vines de lire ceci
http://www.cplusplus.com/reference/cstring/memset/
en gros si mon char
char buffer[250];
a des valeurs
et je fais
memset(buffer,'\0',250)
toutes les caractere seront remplacer par \0.
Mais si je fais ceci
buffer[0]='\0';
C'est la même chose, puisque '\0' est le dernier élément de ma cahine. non?
Merci pepe
ca confirme ce que je pensais
B_tto
September 21, 2014, 8:50am
3
A noter qu'à la déclaration u peux faire :
char buffer[250]={'\0'};
Pour le remplir directement
B_tto
September 21, 2014, 10:21am
4
Tu penses à quel cas exactement ? Sur Arduino c'est sûr ça rempli le tableau de cette manière (et ça m'est jamais arrivé que ça ne soit pas le cas)
system
September 21, 2014, 10:41am
5
il est exact que ca n'initialize que les 1er caracteres spécifiés:
essaie:
char buffer[15]={'1', '2', '3', '\0', '4', '5'};
//char buffer[15];
void setup() {
Serial.begin(9600);
while (!Serial) {
}
}
void loop() {
Serial.println("affiche buffer 1:");
String reportString = buffer;
Serial.println(reportString);
Serial.println("affiche buffer 2:");
for (int i=0; i<15; i++){
Serial.print(buffer[i], HEX);
Serial.print(":");
}
Serial.println();
Serial.println("affiche buffer 3:");
for (int i=0; i<15; i++){
buffer[i] = char(i+65);
}
for (int i=0; i<15; i++){
Serial.print(buffer[i]);
}
Serial.println();
Serial.println("END");
while(true);
}
je me posai la question si la mémoire etaient forcement remise a 0 au boot et/ou reset,
soit par le controleur niveau hard ou dans sa sequence de boot, soit par le code d'init injecté par l'ide.
car le fait de ne pas l'initialiser renvoi quand meme 0 la ou des zone mémoire on été modifiées (sur UNO et IDE 1.0.5).