Ich versuche, einen Zeiger auf ein Array von Strukturen an eine Funktion übergeben. Dann lassen Sie die Funktion ein eigenes Array von Strukturen erstellen, füllen Sie sie mit Daten und überschreiben Sie dann das alte Array mit dem neuen Array.Überschreiben Array von Strukturen in C
Ich bin ziemlich sicher, dass das Problem auftritt, wenn ich versuche, den Speicher zu überschreiben. Ich denke, dass ich entweder die falsche Methode verwenden könnte, um den Speicher zu überschreiben (sollte ich die Speicherfunktionen verwenden?), Oder ich könnte versuchen, das falsche Ding zu überschreiben. Ich bin mir nicht ganz sicher, was ich falsch mache. Wenn mir jemand in die richtige Richtung zeigen könnte, wäre ich sehr dankbar; Ich habe mir jetzt schon drei Stunden die Haare aus dem Kopf gezogen.
Struct:
typedef struct
{
char command;
int argc;
char* argv[];
}cmd;
Code:
int main(int argc, char *argv[])
{
[... irrelevant code]
cmd cmdv[count];
cmd* cmdv_ptr = &cmdv[0];
dissectCmd(cmdstr, cmdv_ptr);
printf("%i", cmdv[0].argc);
return 0;
}
void dissectCmd(char* str, cmd* cmdv)
{
[... irrelevant code]
cmd cmds[count];
int i = 0;
for(i = 0; i < count; i++)
{
cmd next;
next.command = 'u';
next.argc = 100;
cmds[i] = next;
}
cmdv = cmds;
}
cmd cmds [count] ist eine lokale VLA-Array, nicht wahr? Auch wenn Sie cmd ** cmdv und * cmdv = cmds übergeben, wird es nicht funktionieren. – Nyan