réécrire la méthode memset()
Bonjour à tous,
Je viens vers vous car je souhaite réécrire la méthode memset par mes propres moyens mais j'ai quelques soucis.
Voici le lien vers l'explication de la méthode memset, si par hasard quelqu'un ne la connait pas : http://www.cplusplus.com/reference/cstring/memset/
Le soucis étant que lorsque le 'count' est inférieur ou égale à la 'dest' cela fonctionne parfaitement mais lorsque le 'count' est supérieur, ma chaine 'dest' ne se modifie pas comme elle le devrait.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void * monMemset(void * dest, int ch, size_t count);
int main ()
{
char str[] = "Dupont";
//printf("%zd\n", sizeof(str));
monMemset(str,'A',7);
puts(str);
return 0;
}
void * monMemset(void * dest, int ch, size_t count){
unsigned int i = 0;
char * caracTemp = (char*)dest;
while(*(caracTemp+i) != '\0'){
i = i + 1;
}
if ( count > i){
dest = malloc(count+1);
if(dest == NULL){
printf("ERREUR");
}
*((char*)dest+count+1) = '\0';
}
for(unsigned int i = 0; i < count; i++){
*((char*)dest+i) = ch;
}
return dest;
} |
Si quelques-un d'entre pourraient jetter un œil afin de m'aider, cela m'aiderait beaucoup car j'ai l'impression de tourner en rond :cry: