char **data???
-
ich habe eine function: void encrypt (char **data, unsigned long size)
char **data ist ja ein pointer auf array oder? In data steht [R] [N] [O].
Wie kann ich jetz auf die einzelnen Werte zugreifen. habe schon ziemlich viel gesucht aber noch nichts gefunden, was geht!
Ich muss nämlich den wert R mit einem Wert xor-verknüpfen, dann den wert N mit etwas xor-verknüpfen.
Und size ist in diesem Fall 3, weil [R] [N] [O];
[R] [N] [O] [L] [K], hier wäre size 5?Kann mir da vl jem. einen Tipp geben. Ich schaff es nur mit dem 1.Wert also mit R.
Ich habe eine Variable sum(beinhaltet irgendeinen Wert und möchte nun sum zuerst mit R verknüpfen, dann mit N usw.also ich habe probiert mit:
*data[0] = (int) *data[0] ^ sum;Stimmt das?
aber mit: *data[1] = (int) *data[1] ^ sum funzt des net!Danke im voraus!
mfg rene
-
Programmieren ist kein raten!
-
Ja ich weiß aber mittlerweile bin ich schon am verzweifeln!
sorry! Ich habe schon in 2 büchern nachgelesen, gegoogel aber ich finde irgendwie nicht heraus, wie ich auf das 2 element zugreifen kann!mfg rene
-
char = 1 Byte Datentyp.
char* = Pointer auf einen char.
char** = Pointer auf einen Pointer auf einen char.#include <stdlib.h> void Func1(char c) { c = 'A'; } void Func2(char* c) { *c = 'A'; c = (char*)4711; } void Func3(char** c) { **c = 'B'; *c = (char*)4711; c = 0; } int main() { char* c = malloc(1); *c = 'Z'; Func1(*c); // Das Byte auf das "c" zeigt enthält den Wert 'Z'. Dies wird "ByValue" an Func1() übergeben. // Vorher c = Adresse durch malloc() *c = 'Z' | Nachher = Vorher Func2(c); // Der Pointer c selbst wird "ByValue" übergeben. Damit kann der Inhalt verändert werden. // Vorher ... | Nachher c = wie Vorher *c = 'A' Func3(&c); // Der Pointer c wird "ByRefernce" übergeben. Inhalt und der Pointer selbst können verändert werden. // Vorher c = Adresse durch malloc *c = 'A' | Nachher c = 4711 *c = 'B'; free(c); return 0; }
EDIT:
Wenn char** data ein Pointer auf einen Pointer auf ein Array ist dann:
data = Pointer auf den Pointer.
*data = Pointer auf das Array.
**data = Erstes Element des Arrays.Demnach:
int main() { char* char_ptr = malloc(20); char** char_ptr_ptr = &char_ptr; for( int i = 0; i < 20; i++ ) { *(*char_ptr_ptr + i) = i; // so ... (*char_ptr_ptr)[i] = i; // oder so } free(char_ptr); return 0; }
-
#include <stdio.h> void encrypt(char *data, unsigned long size) { unsigned long i = 0; for (; i < size; ++i) { (data[i]) = (data[i]) ^ (char) i; } } int main() { char *test = malloc(32); int i = 0; sprintf(test, "Hallo, Welt!!!\n"); printf("%s\n", test); for (; i < 2; ++i) { encrypt(test, strlen(test)); printf("%s\n", test); } free(test); return 0; }
-
Ok danke einmal für die erklärung!
wie kann ich diesen fehler beheben:
...but argument 2 has the type 'char**'
Wie gibt man einen char** mit printf aus??mfg rene
-
rene_ob schrieb:
Wie gibt man einen char** mit printf aus??
Das ist leicht:
char c = 'a'; char *p = &c; char **pp = &p; printf("%p", pp);