Hallo,
ich wollte eine Datenstruktur erstellen, die ich als Datentyp definiere.
Diese Struktur enthält auch ein char array. Leider kann ich dieses char
array nicht initialisieren?
typedef struct _time
{ /* deklariert den Datentyp time_t */
int second;
int minute;
int hour;
int day;
int week;
char * month;
int year;
} time_t;
time_t time;
char maerz[5]= {'M',1,'r','z',0};
time.month[]= {"Januar", "Februar", maerz, "April",
"Mai", "Juni", "Juli", "August",
"September", "Oktober", "November",
"Dezember"};
Diese letzte Zuweisung ist nicht möglich?
Es gibt immer eine Meldung:
error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
Wie geht denn das genau mit der Initialisierung eines solchen char
array?
Olli R. schrieb:> Wie geht denn das genau mit der Initialisierung eines solchen char> array?
char * month;
dort kann man aber keine monate speichern, es ist nur 1 string oder
array von einzelnen zeichen.
> time.month[]= {"Januar", "Februar", maerz, "April",> "Mai", "Juni", "Juli", "August",> "September", "Oktober", "November",> "Dezember"};
das ganze ist eine zuweisung und keine Initialisierung.
Peter II schrieb:> das ganze ist eine zuweisung und keine Initialisierung.
Ok es ist eine Zuweisung.
Aber wie könnte man dieses Problem den lösen: also das Array mit den
Strings der Monate in das Struct bringen?
Olli R. schrieb:> Aber wie könnte man dieses Problem den lösen: also das Array mit den> Strings der Monate in das Struct bringen?
was sollen sie da drin? du speicherst doch auch nicht mehrer wochen in
week ab, warum sollen da mehere Monate rein - das ergibt doch überhaupt
keinen sinn?
Peter II schrieb:> was sollen sie da drin? du speicherst doch auch nicht mehrer wochen in> week ab, warum sollen da mehere Monate rein - das ergibt doch überhaupt> keinen sinn?
Das hätte ich dann später noch gemacht. Mir geht es darum das alles in
einer Datenstruktur zu haben, um die Variable dieses Typs ganz einfach
den entsprechenden Funktionen zu übergeben!
Olli R. schrieb:> Aber wie könnte man dieses Problem den lösen: also das Array mit den> Strings der Monate in das Struct bringen?
Ich verstehe den Sinn nicht. Selbst wenn es gehen würde, dann hättest Du
in jeder Struct-Variablen eine Kopie der 12 String-Konstanten. Was soll
das?
Wenn, dann müsste man das bei der Definition der Struct-Variablen
machen:
1
time_ttime={...};
Aber ich bin jetzt zu faul, das hier explizit aufzuschreiben - einfach,
weil es unsinnig ist.
Abgesehen davon stimmt - wie bereits erwähnt - das
1
char*month;
nicht. Da bekommst Du lediglich einen Pointer auf einen String, aber
nicht 12 Stück von diesen rein.
Lass mal in der time_t-Struct schön das
1
intmonth;// 0 - 11
stehen, so wie das ursprünglich vor knapp 40 Jahren unter Unix erdacht
wurde. Das hat schon seinen Sinn so.
Du kannst dann nämlich time.month als Index für ein Array
Frank M. schrieb:> Du kannst dann nämlich time.month als Index für ein Arraychar * months[]=
{"Januar", "Februar", maerz, "April",
> "Mai", "Juni", "Juli", "August",> "September", "Oktober", "November",> "Dezember"};>> nutzen, z.B.: time.month = 3; // Index auf April> months[time.month] // ist "April
Ok so werde ich es jetzt auch machen.
Vielen Dank.