ANSI C strncat et \0 final
Bonjour,
Peut-on être sûr d'avoir un \0 final après un strncat et ce d'après la norme.
Ma question ne porte pas sur telle ou telle implémentation de la norme par tel compilateur, mais est-ce qu'il est précisé dans la norme quelquechose concernant \0 final.
Par exemple
Code:
1 2 3 4 5
| char machaine1[20];
char machaine2[20];
strcpy(machaine1,"ABCDEF");
strcpy(machaine2,"123456789A12345");
strncat(machaine1,machaine2,3); |
Dans ce cas est-on sûr d'avoir un \0 en fin de chaine ou doit-on par sécurité l'ajouter.
Je viens récemment de me fourvoyer avec strncpy, je voudrais savoir, si le risque est le même avec strncat.
PS : J'ai cherché sur internet et sur le forum, mais j'ai trouvé des informations contradictoire :
a / on ne peut pas être certain d'avoir un \0
b/Il y a un \0 final
c/ce n'est pas précisé.
PPS: Je développe en C sous VMS, unix et windows avec le même code et des compilateurs différents.
Cordialement
Soazig