Char arrays über pointer übergeben



  • "\0" ist auch falsch sollte '\0' sein.
    BTW was hast du gegen strncpy ?
    Kurt
    edit: wenn du es selbst machen willst dann fehlt dir '\0' im dest-string wenn der src-string länger als 100 zeichen ist.



  • das ist keine zuweisung sondern du initialisierst eine konstante.
    Kurt

    Ähmmm, ja, ich initialisiere eine konstante, welche ich anschliessend dem firstName[100] zuweise... von rechts nach links..



  • sorry, tipp fehler 😉
    ich habe nix gegen strcpy 😉 , nur möchte ich das ganze ohne vorhandenen möglichkeiten machen können. Zumal ich leider an den Prüfungen auch keine String operationen verwenden darf 😞



  • christian.sax schrieb:

    das ist keine zuweisung sondern du initialisierst eine konstante.
    Kurt

    Ähmmm, ja, ich initialisiere eine konstante, welche ich anschliessend dem firstName[100] zuweise... von rechts nach links..

    nee für den compiler heist das reserviere ein char array der länge 100 und initialisiere mit einer konstanten. keine zuweisung.
    Kurt



  • christian.sax schrieb:
    Zitat:
    das ist keine zuweisung sondern du initialisierst eine konstante.
    Kurt

    Ähmmm, ja, ich initialisiere eine konstante, welche ich anschliessend dem firstName[100] zuweise... von rechts nach links..

    nee für den compiler heist das reserviere ein char array der länge 100 und initialisiere mit einer konstanten. keine zuweisung.
    Kurt

    ok, dann wird das wohl schon so sein...
    Habe hier aber doch noch ein Problem:

    firstName = lastName = "Hallo Welt";
    

    funzt nicht,

    '=' : cannot convert from 'const char [11]' to 'char [100]'

    😕 char sind echt lästig...



  • christian.sax schrieb:

    Habe hier aber doch noch ein Problem:

    firstName = lastName = "Hallo Welt";
    

    funzt nicht,

    '=' : cannot convert from 'const char [11]' to 'char [100]'

    😕 char sind echt lästig...

    ok jetzt ist es keine initialisierung mehr sondern eine unzulässige zuweisung.
    Kurt



  • ok jetzt ist es keine initialisierung mehr sondern eine unzulässige zuweisung.
    Kurt

    Und wie müsste die Anweisung korrekt lauten?

    firstName = "Hallo Welt";
    

    funz nämlich auch nicht... gleicher Fehler.. in VS



  • char lastName[100];  // eine declaration
    char firstName[100] = "Hallo Welt"; // initialisierung
    strcpy(lastName, firstName); // zuweisung geht nicht also kopieren.
    

    natürlich kannst du auch beide variablen initialisieren

    char lastName[100] = "Hallo Welt";
    char firstName[100] = "Hallo Welt";
    

    Kurt



  • class CElement
    {
    	friend class CList;
    
    	private:
    	CElement *p_Next;
    	CElement *p_Previous;
    	char firstName[100];
    	char lastName[100];
    	int age;
    
    	public:
    	CElement();
    	CElement(char *m_firstName, char *m_lastName, int m_age);
    };
    

    initialisieren möchte ich das array aber erst im Kontruktor

    CElement::CElement()
    {
    	p_Next = p_Previous = NULL;
    	firstName = "Hallo Welt";
    	age = 0;
    }
    

    und das funzt so nicht müsste also wieder mit strcpy arbeiten oder



  • und das funzt so nicht müsste also wieder mit strcpy arbeiten oder

    Was hast du eigentlich gegen strcpy?
    Wenn du keine vorgefertigten Sachen verwenden willst (die meistens sicherer sind, da oft getestet), kannst du auch deine eigene strcpy()-Funktion schreiben:

    Diese tut nämlich nicht viel mehr als z.B.

    void my_strcpy(char* to, const char* from)
            {
                    while((*to++ = *from++) != '\0')
                            ;
            }
    

    (Wobei diese Funktion im Gegensatz zur Standard-Funktion strcpy() _keinen_ char* auf to zurückgibt...)

    Caipi


Anmelden zum Antworten