[ --ja-- @ 20.06.2009. 23:43 ] @
Pokušavam generirati 8-bajtni niz slučajnih brojeva, međutim imam problem da mi povratna vrijednost funkcije ne odgovara onome što je u samoj funkciji izgenerirano. Gdje je problem? Code: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <stdint.h> uint64_t getChallenge() { uint64_t buffer; int generated; int bytesLeft = sizeof(buffer); int copySize = sizeof(generated) > sizeof(buffer) ? sizeof(buffer) : sizeof(generated); while (bytesLeft > 0) { generated=rand(); if (copySize > bytesLeft) { copySize = bytesLeft; } printf("bytesleft %d : generated: %d : copysize %d : oduzeto %d\n", bytesLeft, generated, copySize, (sizeof(buffer) - bytesLeft)); memcpy((&buffer + (sizeof(buffer) - bytesLeft)), &generated, copySize); bytesLeft -= copySize; } printf ("FUNK: %d %d\n", (unsigned int) buffer, (unsigned int) * (&buffer + 4)); return buffer; } int main(int argc, char *argv[]) { uint64_t tmp; int i; srand(time(NULL)); for (i = 0; i < 1000; i++) { tmp = getChallenge(); printf("MAIN: %d %d\n", (unsigned int) tmp, (unsigned int) *(&tmp + 4)); } } Napomena: Na sistemu na kojem testiram sizeof(int) = 4, odatle onaj &tmp+4 u printf funkciji. Taj poziv naravno tu neće stajati jednom kad funkcija proradi kako treba. Unaprijed zahvaljujem! Marko |