unsigned char Array
-
b muss ein unsigned char array sein, len groß.
len ist die Länge von a.
-
Wenn ich len definieren will, muss ich einen konstanten Wert eingeben.
Was mache ich falsch?
-
void test(unsigned char *a) { int len = 16 unsigned char b; /* Wie richtig b definieren ?! */ memcpy(b, a, len) }
-
Du sagest, du wolltest ein Array in ein anderes kopieren. Ich seh da oben keine Arrays, nur Pointer...
-
#include <stdio.h> #include <string.h> #define MY_UNSIGNED_ARRAY_SIZE 3 typedef struct my_unsigned_array_tag { unsigned array[MY_UNSIGNED_ARRAY_SIZE]; } my_unsigned_array_t; void display_unsigned_int_array(my_unsigned_array_t* puint_array) { size_t i; for ( i = 0; i < MY_UNSIGNED_ARRAY_SIZE; i++ ) printf ( "%2u ", puint_array->array[i] ); putchar('\n'); } void copy_uint_array(my_unsigned_array_t* dst, my_unsigned_array_t* src) { *dst = *src; } int main(void) { my_unsigned_array_t a = {77,88,99}; my_unsigned_array_t b = {0}; display_unsigned_int_array(&a); display_unsigned_int_array(&b); copy_uint_array(&b, &a); display_unsigned_int_array(&b); return 0; }
-
....
-
@dot
Der Pointer (unsigned char *a) zeigt auf das Array, das ich kopieren möchte.@coz i can
Geht das nicht einfacher?
-
IHIEA schrieb:
@dot
Der Pointer (unsigned char *a) zeigt auf das Array, das ich kopieren möchte.Und worauf zeigt b?
-
b soll das unsigned char Array sein, das die Kopie enthält.
-
IHIEA schrieb:
b soll das unsigned char Array sein, das die Kopie enthält.
In deinem Code von vorhin ist b aber nur ein Zeiger, der nirgendwo hin zeigt...
-
IHIEA schrieb:
@coz i can
Geht das nicht einfacher?warum löscht du deine alten beiträge?!
das ist doch scheiße, dann kann niemand mehr verfolgen worum es ging.#include <stdio.h> #include <memory.h> #define UINT_ARRAYSIZE 3 int main(void) { int i; unsigned int a[UINT_ARRAYSIZE]={6,5,4}; unsigned int b[UINT_ARRAYSIZE]={0}; memcpy ( &b, &a, UINT_ARRAYSIZE*sizeof(unsigned int)); for ( i = 0; i < UINT_ARRAYSIZE; i++) printf("%u\n", b[i]); return 0; }
-
@dot
Wie definiere ich b, sodass die Größe nicht konstant sein muss?
-
IHIEA schrieb:
Wie definiere ich b, sodass die Größe nicht constant sein muss?
Wieso muss die Größe beliebig sein, du kennst doch dein a und weißt daher wohl, wie groß b sein muss!?
-
Die Größe von a ändert sich abhängig von der eingelesenen Datein und deshalb soll b ebenfalls variabel sein.
-
Dann musst du wohl malloc verwenden. Die aktuelle Größe von a wirst du wohl irgendwo gespeichert haben.
-
Fehler: Konstanter Ausdruck erwartet
void test(unsigned char *a) { int len = 16 unsigned char b[malloc(len)]; memcpy(b, a, len) }
-
IHIEA schrieb:
Die Größe von a ändert sich abhängig von der eingelesenen Datein [...]
Und woher weißt du dann, wie groß a sein muss?
-
Die ist abhängig von der Dateigröße.
-
Wenn du aber doch bereits weißt, wie du dein a mit variabler Größe erzeugen kannst, wo genau liegt jetzt dann das Problem, dein b auch entsprechend groß zu erzeugen!?
-
Geschafft! Danke dot!
void test(unsigned char *a, size_t size_a) { unsigned char *b = NULL; b = (unsigned char *)malloc((off_t)(size_a)); memcpy(b, a, (off_t)size_a); }