Je souhaire écrire une fonction qui crée un fichier de log dont le nom serait : <nom du programme><date systeme>.log, la date devant être sous le format ddmmaaaa.
J'utilise pour cela un buffer et la fonction sprintf.
Le nom de mon fichier de log a toujours une taille de 21, c'est la raison pour laquelle mon buffer est à 21. Mais, ce qui est étrange c'est que lorsque je déclare mon buffer par char logName[1] ou n'importe quelle valeur en dessous de 21, mon programme ne plante pas et fonctionne parfaitement... alors que d'après ce que j'ai pu lire partout il fallait s'assurer que le buffer soit d'une taille suffisante sous peine de plantage... mais je n'ai aucun plantage !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //Déclaration du buffer char logName[21]; sprintf(logName,"ExpMicros%.2d%.2d%.4d.log",tb->tm_mday,(tb->tm_mon)+1,(tb->tm_year)+1900); printf("logName: %s %d", logName,strlen(logName));
Je précise que strlen(logName) me renvoie bien 21 malgré l'éventuel char logName[1];
Si quelqu'un pouvait m'expliquer ce mystère...
Partager