Я пытаюсь скопировать функцию memset. По причине я не понимаю, следующий код не работает и производит странные результаты:memset clone производит странные результаты
#include <sys/types.h>
void *mem_set(void *dst, int c, size_t n)
{
char *d;
size_t i;
d = dst;
for (i = 0; i < n; i++)
d[i] = (unsigned char) c;
return dst;
}
Вот тест:
int *a;
a = malloc(4 * sizeof(int));
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
mem_set(a, 1, 4);
printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
free(a);
А вот выход:
1 2 3 4
16843009 2 3 4
'sizeof (int)! = Sizeof (char)' – wildplasser
Проблема в том, что ваш массив 'a' является массивом' int', но ваш 'mem_set' принимает байты (символы). Попробуйте 'char * a;' и 'malloc (4 * sizeof (char));' – lurker
Прежде чем спросить: «Что случилось с моей реализацией« memset », возможно, сначала вы должны сравнить результаты своей реализации с результатами обычного 'memset'. – jamesdlin