Array lässt sich kein zweites Mal füllen



  • und was genau erwartest du von der Zeile

    myArray[-1] = 0;
    


  • Array lässt sich kein zweites Mal füllen

    Na klar. Es ist ja auch schon voll. xD

    *SCNR* 😃

    Würde jetzt auch noch gerne eine kompetente Antwort geben, aber muss gerade los. Sorry. 😞



  • @Skym0sh0
    Was ich möchte ist, dass der Benutzer einen zweiten Eintrag machen kann wenn er möchte.

    Erste Eingabe sieht so aus:
    Text : Beispiel
    Datum : Beispiel
    Zeit : Beispiel

    Nach Auswahl eine neue Eingabe zu machen kommt folgendes:
    Test :
    Datum : Beispiel
    Zeit : Beispiel

    Er gibt mir im zweiten Durchlauf keine Chancen, den Text für den Eintrag anzugeben. Er fragt zwar danach, springt dann aber direkt weiter um nach dem Datum zu fragen, ohne eine Eingabe abzuwarten.

    @daddy_felix

    Hab gelesen das Strings immer mit einer 0 abgeschlossen werden und dies wollte
    ich damit machen.



  • Aber -1 ist ja der Index vor dem ersten Index, das ist überhaupt kein gültiger Eintrag. Dachtest Du, das ist dann am Ende?

    Also wenn Du oben einfach statt cin.getline(...) ebenfalls getline(cin, ...) nutzt, kannst Du direkt den String angeben. Und std::strings sind eh nullterminiert.

    Und möglicherweise löst das auch Dein Überspringproblem.



  • @Eisflamme : Ja blöderweise habe ich wirklich gedacht es wäre der letzte Index o.O
    Wenn ich ehrlich bin habe ich auch nie infrage gestellt ohne Array zu arbeiten.
    Einmal geschrieben war es quasi gesetzt und wurde nicht mehr von mir hinterfragt 😃
    Danke schonmal für den Denkanstoß

    Aber was bleibt:

    Wenn ich die cin.getline Sache z.B. so abändere:

    string sText; 
       cout << "Geben Sie die Nachricht fuer Ihren Kalendereintrag ein: " << endl;
       getline(cin, sText);
    

    Bleibt immer noch der selbe Fehler 😕



  • Samp schrieb:

    Er gibt mir im zweiten Durchlauf keine Chancen, den Text für den Eintrag anzugeben. Er fragt zwar danach, springt dann aber direkt weiter um nach dem Datum zu fragen, ohne eine Eingabe abzuwarten.

    Das tut er deshalb, weil Du in Zeile 57 zwar die Antwort von std::cin liest aber nicht das Ende der Zeile. Letzteres steht noch im Eingabestream und wird nach einer positive Antwort in Zeile 16 als leerer Eintrag gelesen.

    Füge zwischen den Zeilen 8 und 9 ein

    cin >> ws;
    

    ein.

    Gruß
    Werner



  • @Werner:

    Super ich danke dir vielmals. Genau das war das Problem und ich hätte
    auf ewig an der falschen stelle gesucht.

    Wenn du noch kurz Zeit hättest, würde ich gerne wissen was genau durch
    cin >> ws; passiert?

    ps: Achja bevor ich es vergesse. Großes Lob ans Forum! Schnelle und produktive Antworten sucht man im Netz oft vergebens. Schön das es hier anders war 😛



  • Samp schrieb:

    Wenn du noch kurz Zeit hättest, würde ich gerne wissen was genau durch
    cin >> ws; passiert?

    Der Ausdruck liest alle White Space Character. Siehe auch std::ws. Falls dann noch Fragen bleiben, bitte melden.

    Samp schrieb:

    ps: Achja bevor ich es vergesse. Großes Lob ans Forum! Schnelle und produktive Antworten sucht man im Netz oft vergebens. Schön das es hier anders war 😛

    ja das freut uns - also Willkommen im C++-Forum!

    Ansonsten kannst Du noch die Zeilen 29 bis 53 durch

    {
        ofstream myFile ("L:/Thomas/C++/Datapool/Kalender.txt", ios::app); // ios::out ist unnötig, ein ofstream hat immer ios::out
        myFile << day << "." << month << "." << year << "  " << hour << ":"
            << minute << "  |  " << myArray << endl;
        }
    

    ersetzen.

    das tut genau das gleiche, wie der ganze Rest.

    Gruß
    Werner



  • system("PAUSE")
    

    müßtest Du Dir überlegen, ob das sinnvoll ist, da das ausschließlich unter Windows
    funktioniert.
    Eine Alternative wäre evtl.:

    cin.clear();
    cin.ignore(256, '\n'); 
    cout << "Weiter mit Return..." << endl; 
    cin.get();
    

    Eine andere Frage wäre, ob das verwendete c-array sinnvoll ist.
    Weiß gerade nicht, ob die Anzahl der zu speichernden Werte von vornherein fix ist. Falls nicht, wäre ein std::vector besser, Infos kannst Du unter
    http://www.cplusplus.com/reference/stl/vector/push_back/ nachlesen.

    Und es wäre schön, wenn Du die c++-tags zum posten von Code benutzt, das ist
    dann noch lesbarer.




Anmelden zum Antworten