[MSVS 05] Compilerfehler Typkonvertierung

derschotte

Grünschnabel
Hallole,

bekomm folgenden Fehler und hab keinerlei Idee was da falsch sein soll :( warum will der compiler da etwas konvertieren?

Fehler 1 error C2440: '=': 'const char [6]' kann nicht in 'char [20]' konvertiert werden


Code:
#include "stdio.h"

int main()
{
    struct fahrer
    {
        char vname[20];
        unsigned int nummer;
    };

    fahrer daten;

    daten.vname="willi";
    daten.nummer=100;
}
danke
 
Danke, geht natürlich mitm Zeiger.

Aber mir ist nicht ganz klar, warum ich nicht erst im Struct ein Array mit beliebiger Grösse anlegen kann um es später zu füllen?
 
Hi!

Wie du schon richtig sagst hast du ein Array :


char vname[20] |...|...|...|...|...|...|...| .....
............................. ^
........................ vname



Jetzt erstellst du ein konstanten "string"
ich nenne ihn einfach mal temp:
Code:
    const char* temp = "Willy"
Was du nun bekommst

const char temp[6] = | W | i | l | l | y | \0 |
........................................ ^
..................................... temp

Im nächsten Schritt hast du
Code:
    vname = tmp;
gesagt.

Du sagst das ein Zeiger der auf ein char[20] zeigt
jetzt auf ein const char[6] zeigen soll!

Das funktioniert logischerweise nicht.

Du musst die Buchstaben direkt reinschreiben:
Code:
vname[0] = 'W';
vname[1] = 'i';
..
.
Was der Funktion strcpy() entspricht.

Mit einem Zeiger funktioniert es natürlich weil der
Speicher erst wenn er benoetigt wird angefordert wird.
der Zeiger wird dann einfach auf die belegte Stelle
gesetzt werden.

Benny
 
Zurück