fehler bei cin.getline()



  • hi, ich arbeite mit dev-c++ editor und compiler...
    gestern habe ich mir mal n buch gekauft und habe heute folgenden quellcode geschrieben, kann aber keinen fehler finden,
    und trotzdem meldet es mir beim cin.getline(art[1].bezeichnung, 30); einen fehler!
    ich habe keine ahnung, wo der fehler liegt! laut buch sollte das gehen...
    naja, laut buch sollte es auch mit void main(void) gehen,
    und das shluckt mein compiler auch nicht!

    #include <iostream>
    using namespace std;
    
    float fUmsaetze[5][12];
    
    union artikel {
    long artikelnr;
    char fremdartikelnr[30];
    };
    
    struct artikelstamm {
    char bezeichung[30];
    union artikel nummer;
    };
    
    struct artikelstamm art[100];
    
    main()
    {
    int i;
    
    cout<<"Bitte 1. Artikel eingeben:" << endl;
    cout<<"Bezeichnung: ";
    cin.getline(art[1].bezeichnung, 30);
    cout<<"Handelt es sich bei "<<art[1].bezeichung;
    cout<<"um einen Fremdartikel [1] "<<endl<<"oder eigenen Artikel [2]";
    cin>>i;
    if(i==1)
    {
    cout<<"Fremdartikelnr. eingeben ";
    cin>>art[1].nummer.artikelnr;
    }
    
    cout<<"Artikel: "<<art[1].bezeichung<<endl;
    cout<<"Art-Nr: ";
    if (i==1)
    cout<<art[1].nummer.fremdartikelnr;
    else
    cout<<art[1].nummer.artikelnr;
    }
    


  • und trotzdem meldet es mir beim cin.getline(art[1].bezeichnung, 30); einen fehler!

    struct artikelstamm {
    char bezeichung[30];

    cin.getline(art[1].bezeichnung, 30);

    Deutlicher:

    bezeichung[30]

    art[1].bezeichnung

    Fällt dir was auf?



  • hi, meinste art[1].bezeichnung??? meinste da das [1]???
    es stand soviel ich sah, so im buch...
    wenn ich das 1 auf 30 änder ists auf jeden fall nicht besser!
    wo ist der fehler?



  • du hast ein n vergessen bezeichung!=bezeichnung

    btw. wäre es praktisch, wenn du gleich die Fehlermeldung mit postest 🙄

    aut buch sollte das gehen...
    naja, laut buch sollte es auch mit void main(void) gehen,
    und das shluckt mein compiler auch nicht!

    void main(void) ist vom Standard nicht vorgesehen. Du solltest immer int main() (oder mit Parametern) benutzen, da dies jeder Compiler laut Standard verstehen muss. main ohne Rückgabewert ist übrigens in C++ falsch, da es kein implizit int gibt, wie in C (außer C99, dass auch kein implizit int mehr hat :))



  • hi, habe den fehler mit dem fehlenden n ein paar mal gefunden!
    was heisst da implizit int?

    und wie du sahst, habe ich das main() ohne was und es geht!
    das prog lauft jetzt übrigens!



  • implizit int heißt, dass ohne typangabe automatisch int angenommen wird

    main () {}
    

    wäre demnach gleichbedeutend mit

    int main () {}
    

    nur, dass es in C++ dieses "implizit int" nicht gibt.
    Wenn dein Compiler es unterstützt, schön. Wenn du den einmal wechselst, könntest du Probleme bekommen.
    Immer schön standardkonform arbeiten 😉


Log in to reply