Variablen Prob?? Vorsicht Newbie;-)



  • Wie im Betreff schon steht bin ich neu hier, und habe auch noch nicht so wirklich viel Ahnung.
    Beim experimentieren bin ich auf folgendes Problem gestoßen:

    #include <iostream.h>
    int a ;
    char Vari[3];
    Vari='int';
    int main()
    {

    cout << Vari << "\n" ;

    cin >> a;
    return 0 ;
    }

    Ich denke das ich die paar Zeieln nicht erklären brauche .
    Ich möchte in die Variable "Vari" die Zeichenkette "int" ablegen.
    Bekomme aber immer Fehlermeldungen,habe in meinem Buch auf die schnelle auch keine Lösung gefunden.
    Ich weiß das es elegantere Lösungen als mit Char gibt aber so weit bin ich halt noch nicht in meinem Buch,und ich will es so probieren.

    Vielen Dank fürs Gucken.
    Pta



  • Hallo

    ums mal kurz zu machen:

    char Vari[4]="int";
    

    Denn Zeichenketten benötigen immer ein Zeichen mehr als sie aufnehmen sollen. Das zusätzliche Element am Schluß schließt die Kette mit einem '\0' ab.

    Das es bessere möglichekeiten in C++ als chars gibt, da hast du recht.

    /Edit : desweiteren

    #include <iostream>
    

    ohne .h, weil es nicht feststeht, das es wirklich eine Headerdatei dafür gibt.

    bis bald
    akari



  • Hallo,

    1. Zu iostream.h: http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ

    2. Ab jetzt bitte Code-tags benutzen: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39411.html 😉

    Zu deinem Problem:

    mit

    Vari = "int";
    

    versuchst du der Adresse des ersten Elements (&Vari[0]), d.h. der Adresse des char's an der 0 Position 3-Byte zuzuweisen, was natürlich nicht geht.

    Ich denke, dass du dem gesammten Array einen Wert zuweisen willst, sprich dass Vari[0] = 'i', Vari[1] = 'n' und Vari[2] = 't' ist.

    Das kannst du natürlich auf verschiedenen Wegen bewerkstelligen, entweder bei der Definition des Arrays (siehe akari), oder Mithilfe der Funktion strcpy().

    Desweiteren reservierst du nur 3-Byte Speicher für dein char-Array, belegst aber 4 (Die Nullterminierung '\0' Belegt ein zusätzliches Byte).

    /edit: zu langsam...

    Caipi



  • akari schrieb:

    char Vari[4]="int";
    

    Denn Zeichenketten benötigen immer ein Zeichen mehr als sie aufnehmen sollen.

    Deswegen sollte man die 4 auch weglassen.


Anmelden zum Antworten