Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.11.2010, 11:53

char Array im Code füllen

Hallo,

mein Code sieht momentan so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>

// Hauptprogramm
int main ()
{
    // Struktur
    struct S_Auto
    {
        char Name[30];
    };

    // Variablen
    S_Auto Automarke[2];

    // Autos initialisieren
    Automarke[0].Name = BMW;
    Automarke[1].Name = VW;

    return 0;
}

Allerdings funktioniert der Teil unter "Autos initialisieren" nicht. Wie ich dem char-Array in der Konsole einen Wert zuordne weiß ich, aber wie ich das direkt im Code machen, keine Ahnung.

Danke im Voraus!

2

19.11.2010, 11:58

BMW und VW sind ja nirgends definiert. ;)
Versuch es mal mit Anführungszeichen, da "Name" ein Array vom Typ char ist.
fka tm

3

19.11.2010, 12:04

Wie es jetzt ist würde der Compiler bei BMW und VW eine Variable erwarten, du müsstest das schon in Anführungszeichen schreiben, damit es als char* betrachtet wird; allerdings kann man das so nur bei der Definition zuweisen.
Um jetzt also "BMW"/"VW" in S_Auto::Name zu kriegen, könntest du die Funktion strcpy() nehmen:

C-/C++-Quelltext

1
2
3
// Autos initialisieren 
strcpy(Automarke[0].Name, "BMW"); 
strcpy(Automarke[1].Name, "VW");
Für mehr Infos zu strcpy() siehe http://www.cplusplus.com/reference/clibrary/cstring/strcpy/

4

19.11.2010, 12:04

Wenn ich BMW und VW in Anführungszeichen setze, bleibt "Automarke" unterstrichen und wenn ich die Maus drauf halte, steht dort: "Der Ausdruck muss ein änderbarer Ivalue sein.".

EDIT: Danke, euch beiden! defaultplayers Variante hat funktioniert. :thumbup:

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

19.11.2010, 12:08

Ist auch klar, du kannst einem char-Array nicht einfach so ein String Literal zuweisen.
Was du z.B. machen kannst wäre das:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

// Hauptprogramm
int main ()
{
    // Struktur
    struct S_Auto
    {
        char Name[30];
    };

    // Variablen
    S_Auto Automarke[2] = {
      {"BMW"},
      {"VW"}
    };

    return 0;
}

6

19.11.2010, 13:09

Huhu oder das: :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstring>
struct Car
{
    char m_brand[30];
    Car(const char* brand) 
    { 
        std::strncpy(m_brand, brand, 29); 
        m_brand[29] = 0; // http://www.cppreference.com/wiki/string/c/strncpy, bei überlänge sonst nicht nullterminiert
    }
};

int main()
{
    Car car("BMW");
}
cpp machsts möglich :D
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige