Sicher kann man das dynamisch machen.
#define DIMX 20
#define DIMY 400
char* ppspec[DIMX][DIMY];
int relay_index_x;
void Init()
{
int i, j;
for( i = 0; i < DIMX; ++i )
for( j = 0; j < DIMY; ++j )
ppspec[i][j] = 0;
}
void Clean()
{
int i, j;
for( i = 0; i < DIMX; ++i )
for( j = 0; j < DIMY; ++j )
free( ppspec[i][j] );
}
int main()
{
char relay_index_x_char[1024];
char* tmp;
/*
** Mal das 2D Array der Pointer auf 0 setzen.
** Ist zwar nicht wirklich notwendig, da es sich hier
** um eine globale Variable handelt und die wird sowieso
** mit 0 initialisiert, was für Pointer eh passt
** aber: wenn das ganze mal voll dynamisch wird, ist man
** um diesen call meist sehr froh
*/
Init();
/*
** mal den String erzeugen lassen
*/
sprintf( relay_index_x_char, "%d", relay_index_x );
/*
** dann ein char Array erzeugen, welches den String aufnimmt
** und so gross ist, dass der String grade noch rein geht
** und den String dorthin kopieren
*/
tmp = malloc( strlen( relay_index_x_char ) + 1 );
strcpy( tmp, relay_index_x_char );
/*
** diesen Pointer jetzt im 2D Array der Pointer
** verankern
*/
ppspec[8][spec_index_x] = tmp;
/*
** Program beenden:
** Zusammenräumen
*/
Clean();
}
Nächste Frage: Was ist mit dem 2D Array selbst. Braucht
das wirklich ständig 20 * 400 Einträge? Oder sollte man
die nicht auch besser dynamisch je nach Bedarf erzeugen?