DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 4 juil. 2004 à 20:56
Le probleme ne vient pas de sprintf...
Toute chaine de caracteres doit se terminer par un caractere nul, pour pouvoir etre lues et traiter correctement, sinon tu aurais des caracteres illisible apres ta chaine.
Mets moi ton bout de code ici en me disant précisement ce que tu souhaites faire et je corrige ton code si nécéssaire..
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 4 juil. 2004 à 22:27
Bonjour,
Si tu veux mettre plusieurs chaine à la suite utilise soir strcpy suivit de strcat.
Ou bien pour faire de l'optimiser utilises la fonction bnstrcpy de Brunews que tu trouveras sur ce site pour faire du chainage direct.
Exemple avec bnstrcpy :
char szTest[256];
char *c;
c = bnstrcpy(szTest, "coucou");
c = bnstrcpy(c, " hello");
bnstrcpy(c, " fin");
code de la fonction bnstrcpy :
__inline char* bnstrcpy(char *dst, char *src) // return ptr sur NULL final
{
__asm {
mov eax, dst
mov ecx, src
dec eax
LcpyLoop:
mov dl, [ecx]
inc eax
inc ecx
mov [eax], dl
or dl, dl
jz short LcpyOut
mov dl, [ecx]
inc eax
inc ecx
mov [eax], dl
or dl, dl
jz short LcpyOut
mov dl, [ecx]
inc eax
inc ecx
mov [eax], dl
or dl, dl
jnz short LcpyLoop
LcpyOut:
}
}
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 20081 7 juil. 2004 à 18:05
Super la fonction bnstrcpy!
Moi en fait , j'utilisais un pointeur qui pointait vers la chaine a remplir et qui avance au fur et a mesure...
Mais je pense que ce serait possible de reculerl e pointeur d'un caractere pur ecraser le caractere NULL...
Mais bnsstrcpy est plus pratique
Merci!! :big)
HCJarod
Messages postés221Date d'inscriptionmardi 12 août 2003StatutMembreDernière intervention11 décembre 20081 11 juil. 2004 à 15:31
je ne pige pas pourquoi le code n'est pas plutot :
__inline char* bnstrcpy(char *dst, char *src) // return ptr sur NULL final
{
__asm {
mov eax, dst
mov ecx, src
dec eax
LcpyLoop:
mov dl, [ecx]
inc eax
inc ecx
mov [eax], dl
or dl, dl
jnz short LcpyLoop
}
}
il y a trois fois la même chose??? mais bon j'ai peut etre louper quelquechose!
Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+