Ich habe eine Reihe von Zeichenfolgen wie folgt deklariert:
char parts[PART_COUNT][PART_MAX];
Dann habe ich eine Funktion erstellt, die einen String und ein Array von Strings nimmt und in diese Teile aufteilt, was folgendermaßen deklariert wird:
WORD PartString(const char *str, char **parts, char sep);
Ich kann scheinen, an Teilen [i] [j] zu lesen, aber wenn ich versuche, so zuzuweisen:
parts[i][j] = str[x];
Ich bekomme diesen Fehler:
Nicht behandelte Ausnahme um 0x012614d8 in remote.exe: 0xC0000005: Zugriffsverletzung beim Schreiben des Speicherorts 0xcccccccc.
Kann mir jemand einen Weg sagen, dies in C zu tun? Vielen Dank.
Antworten:
1 für die Antwort № 1#define PART_MAX 1024
#define PART_COUNT 4
Ok, es gelang mir, das Problem zu beheben. Ich hatte meine Compiler-Warnungen deaktiviert und als ich sie wieder einschaltete, bekam ich Folgendes:
"char **" differs in levels of indirection from "char [4][1024]"
Hier ist die neue Deklaration, mit der ich die Zeichenfolgen im Array ändern kann:
WORD PartString(const char *str, char (*parts)[PART_MAX], char sep)
Dann passiere ich einfach als:
PartString(buffer, parts, ".");