unsigned char Array
-
SeppJ schrieb:
TyRoXx schrieb:
std::copy
Falsche Sprache.
Finde ich auch. C ist die falsche Sprache.
Falls hier wirklich ein Array mit konstanter Länge gemeint ist, verpacke es in einer Struktur und kopiere Objekte der Struktur mit dem Zuweisungsoperator. Da kann am wenigsten schief gehen.
-
IHIEA schrieb:
Ich möchte nun ein unsigned char Array in ein komplett unabhängiges neues kopieren.
Vorschläge?!ja.
ansätze?TyRoXx schrieb:
Finde ich auch. C ist die falsche Sprache.
troll.
-
Neuer Sourcecode.
-
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?