A propos de SNPRINTF

xtremejames183 Messages postés 32 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 14 avril 2009 - 14 juin 2007 à 22:54
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009 - 21 juin 2007 à 08:13
Simple question stupide a propos de snprintf

{
    char   nom[40];

    snprintf(nom,sizeof(nom),"votre nom est %s",nom);

    puts(nom);

    /* affiche







        votre nom est machin
       */
   






    snprintf(nom,sizeof(nom),"nouveau nom est %s",nom)

   





  /* affiche






       





nouveau nom est machin










       */
}



la question se pose pourquoi la "chaine






votre nom est machin"  est ecraser et comment la garder avec la nouvelle chaine. ?
Merci d'avance








   

3 réponses

cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
18 juin 2007 à 10:33
salut, normal,

pour faire ce que tu veux faire bon snprintf ..... c pas super

utilise pluto stract , strcpy

strncat, strncoy si tu veux vraiment controler les tailles de chaines

pour snprintf / sprintf lors de la recopie il commence en début de chaine donc .... ton résultat

+
0
xtremejames183 Messages postés 32 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 14 avril 2009
21 juin 2007 à 00:10
oui mais s'il s'agit d'une chaine formatter
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
21 juin 2007 à 08:13
pour snprintf(nom,sizeof(nom),"nouveau nom est %s",nom)

tu peux écrire :

strcpy(nom,"nouveau nom est ");

strncat(nom,MonNom,TAILLE_NOM_MAX);
strncat(nom,"\0",TAILLE_NOM_MAX),

voila en forme sa parait plus long en réalité moin couteur en perfs ...
0