lektrosonic
Messages postés145Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention21 février 2013
-
11 mars 2007 à 21:09
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
13 mars 2007 à 19:24
bonjour, j'ai ramene mon projet sous visual studio 2005 pro (de dev-cpp)
sous dev-cpp j utilisait strcpy..aucun probleme..
alors que la premiere fois que j'ai compile sous vs, un warning aparait comme quoi strcpy n est pas tres sur et que je doi utiliser strycpy_s
je le remplace avec strycpy_s (qui prend un argument de plus, celui de la taille maximale de la chaine de destination)
j ecrit alors:
strcpy_s(lang[i],sizeof(lang[i]),temp_buffer);
et bam ca plante lors de cette..(pas d erreur de compilation, ca plante quand j execute l exe)
une suggestion peut etre?
doi-je juste laisser strcpy et ignorer le warning ?
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 12 mars 2007 à 01:01
Salut,
Tu peux bien sûr ignorer le warning. Personnellement, je préfère utiliser la fonction API lstrcpy(). Pour un nombre déterminé de caractères il y'a lstrcpyn().
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 13 mars 2007 à 04:21
wsprintf, c'est pas pour du UNICODE ça ?
De plus, peut-être est-ce voulu mais, tu commence ton tableau à 1. Normalement c'est à 0 donc: for(i=0;i<51;++i)
char *lang[50] <- c'est un tableau de pointeurs.
Si tu fais sizeof(lang[i]), tu obtiendra à tout les coups 4, car c'est la taille d'un pointeur.
Moi, à ta place, je choisirais d'ignorer l'avertissement. Si tout est bien codé, il n'y a aucune raison d'utiliser strcpy_s (en plus, c'est plus lourd qu'un strcpy).
Il existe un emplacement dans les propriétés de ton projet pour désactiver les avertissements. Suffis d'entrer le numéro de l'avertissement pour qu'il n'apparaise plus. Je ne peux pas te dire exactement où car je suis sous Linux actuellement mais je crois que c'est dans l'onglet compilateur.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 13 mars 2007 à 15:56
louis >> Je ne vois pas l'interet de ton code. Tu écrase à chaque tour de boucle la chaine précédament entrée dans lang. Ça ne sers à rien. Y'a aussi quelques petits trucs d'inutiles:
lang = NULL; <- Pas nécessaire
if(lang[i] == NULL) <- C'est quoi ça ??? Pour tester la mémoire alloué par malloc, on fait : if(!lang)
strcpy(lang,LENGTH_STR,temp_buffer) <- C'est un strcpy, pas de LENGTH_STR