Langsam!
|
C/C++ Quellcode
|
1
|
char m_MovieName[5];
|
<- Das ist insofern Korrekt, dass du einen Namen mit 5 Buchstaben speichern kannst , abzuglich der Nullterminierung ('\0') sind es halt vier Zeichen.
Das die Namenlänge variable sein kann und damit auch die "Fünf" auch Variable ist ist klar, dennoch will ich vorerst nicht weiter drauf eingehen (Stichwort new/delete bzw malloc/free), da du anschweinend noch am Basics lernen bist.
In C kannst du Arrays nicht einfach einem Anderen Array zuweißen, sondern musst die Elemente (Zeichen) nach und nach kopieren und dafür schreibst dir entweder eine Funktion oder verwendest eine fertige.
Die Nullterminierung wurde eingeführt um zu ermitteln wann der Text zu Ende ist (Zeichen == 0).
Mit
*Film[0].m_MovieName=*"Film1";
kopierst schreibst du an die erste Position von m_MovieName denersten Buchstaben 'F' und nicht mehr.
Desweiteren
auf keinen Fall so wie du es hier machst verwenden:
Movie* Film;
...
*Film[0].m_MovieName=*"Film1";
Film[0].m_Seats=100;
Film->m_Seats[0]=100;
Die Pointervariable Film hat an dieser Stelle noch einen ungülltigen Wert (Stichwort new/delete etc.) und durch die folgenden Befehle stürt das Programm früher oder später ab!
Eine richtige Möglichkeit wäre:
|
C/C++ Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <string.h>
...
struct Movie
{
char m_MovieName[5];
int m_Seats;
char m_StartTime[5];
};
...
Movie FilmListe[20] = {0}; // Max 20 Filme, alle Daten mit 0 füllen
// Den Text (Array) "Film1" nach m_MovieName des ersten Filmes(0) kopieren
// max. Textlaenge = 5 (da die Variable m_MovieName[5] nicht mehr speichern kann)
strncpy(FilmListe[0].m_MovieName, "Film1" ,5);
|
Mfg Rushh0ur