Frage zu Pointer Array in C
Hallo,
ich möchte ein dynamisches Pointer Array erstellen das der Benutzer durch eingaben füllen kann.
Mein Versuch endete aber immer mit dem Absturz des Programms, mein Compiler(Dev-C++ ) gibt dabei keine Fehlermeldung aus. Ich weiß durch herumprobieren inzwischen das es am strcpy hängt, aber ich finde keine Lösung wie man die Eingabe im Puffer ins Pointer Array(in Zeile i) kopiert!
MfG Tobi
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>
#define ZEILEN 128
#define SPALTEN 50
main()
{
char *PtrArray[ZEILEN];
char *puffer;
int i;
for (i=0;i<=50;i++)
{
gets(puffer);
strcpy(PtrArray[i], puffer);
}
return 0;
system("PAUSE");
}
ich möchte ein dynamisches Pointer Array erstellen das der Benutzer durch eingaben füllen kann.
Mein Versuch endete aber immer mit dem Absturz des Programms, mein Compiler(Dev-C++ ) gibt dabei keine Fehlermeldung aus. Ich weiß durch herumprobieren inzwischen das es am strcpy hängt, aber ich finde keine Lösung wie man die Eingabe im Puffer ins Pointer Array(in Zeile i) kopiert!
MfG Tobi
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <ctype.h>
#define ZEILEN 128
#define SPALTEN 50
main()
{
char *PtrArray[ZEILEN];
char *puffer;
int i;
for (i=0;i<=50;i++)
{
gets(puffer);
strcpy(PtrArray[i], puffer);
}
return 0;
system("PAUSE");
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 34634
Url: https://administrator.de/contentid/34634
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hi Tobi,
mit der Zeile "char *PtrArray" legst du nur ein Array von 128 Pointern an,
die aber jeweils noch nicht initialisiert sind.
Du könntest nach dem gets() mit
PtrArray[i] = malloc(strlen(puffer)+1);
den Speicher für den eingegebenen String allocieren,
damit das strcpy nicht ins Nirvana geht.
Aber hinterher das Aufräumen nicht vergessen (wie früher das Kinderzimmer
mit der Zeile "char *PtrArray" legst du nur ein Array von 128 Pointern an,
die aber jeweils noch nicht initialisiert sind.
Du könntest nach dem gets() mit
PtrArray[i] = malloc(strlen(puffer)+1);
den Speicher für den eingegebenen String allocieren,
damit das strcpy nicht ins Nirvana geht.
Aber hinterher das Aufräumen nicht vergessen (wie früher das Kinderzimmer