Notizkalendar programmieren. -> Denkanstoß :)



  • Buster92 schrieb:

    Aber so funktioniert es auch nicht..

    🙄
    Fehler beim compilieren?
    Fehler im Programmablauf?
    Wie kommst du darauf das es nicht funktioniert?



  • Ein Fehler erscheint nicht.

    Der gibt mir aber im Programmablauf nur "Die Notizen konnten nicht gelöscht werden" aus...



  • Sei mal so frei und gib ganz oben bei Deinen includes noch

    #include <errno.h>
    

    mit an.
    Statt

    else
        printf("Notizen konnten nicht gel\x94scht werden.");
    

    nimmst Du mal folgendes:

    else
     {
        printf("Notizen konnten nicht gel\x94scht werden.");
        fprintf(stderr, "Fehler: %s\n", strerror(errno));
     }
    

    Mit etwas Glück bekommst Du womöglich noch ne Aussage zum System zu dem Fehler hingeschmissen.



  • Okay werde ich mal eben ausprobieren, danke 🙂

    Und hab grade mal
    system("cls");
    ausprobiert. Das funktioniert. Das Programm wird "geleert" und fängt wieder von vorne an...bloß stoppt es nicht und man kann die eingegeben notiz nicht mehr lesen obwohl ich ein break; eingefügt habe

    Edit: Eeeeedel der sagt mir den Fehler ja direkt im Programm 🙂 Nice 🙂
    Also da steht "no such file or directory" - wie ich verstehe soll das wohl andeuten dass der keine files zum löschen findet?



  • correctamundo!

    Blöd gesagt: Wo auch immer Dein Programm hat Löschen lassen wollen, was unter dem Namen nichts zu finden. Mag daran liegen, dass die Dateien schlicht und einfach nicht existieren oder dass sie möglicherweise nicht im Aufrufpfad (= Suchpfad für Öffnen, Löschen, Wasauchimmer) liegen.

    break;
    

    ist keine Funktion zum Anhalten des Programms. Funktionen erkennst Du grundsätzlich daran, dass die Klammern folgen und falls gewünscht auch Parameter drin stehen.
    Solltest Du anders vorgehen... Mal wieder völlig ohne Gewähr und ungetestet:

    printf ("\n--Eingabetaste zum Fortfahren--\n");
    while ('\n' != getchar());
    

    Bis Du "irgendeineEingabeoderauchnichtsweiter" gefolgt von Enter drückst, tut sich dann nichts und Du kannst in Ruhe lesen, was passiert + dein Eingabepuffer ist keine Herberge für heimatlose NewLines.

    break;
    

    dagegen ist eine Anweisung, die das Verlassen einer switch-Direktive oder einer Schleife auslöst.



  • Die Dateien exisiterien aber 😞
    Und sie heißen auch exakt so wie ich sie beschrieben habe.

    Und mit deinem Codeschnipsle für die Pausierung will auch nicht funktionieren..

    // Lesen
    int Notizen_anzeigen(char *Dateiname, char *Tag)
    
        {
          if ((fp = fopen(Dateiname,"r+")) == NULL) {
          printf("\nDatei %s fuer %s konnte nicht zum Lesen geoeffnet werden.", Dateiname, Tag);
          return 1;
          }
          printf("Eingegebene Notiz/en f\x81r %s\n", Tag);
    		 while (fgets(zeile, 79, fp)) printf("%s", zeile);
          fclose(fp);
    	  printf ("\n--Eingabetaste zum Fortfahren--\n");
    		while ('\n' != getchar()); 
    	  system("cls");
    	  return 0;
    
        }
    

    Edit: Ahhh ich habs! 😃 mit _getch(); funktioniert es ohne Probleme 🙂

    Jetzt nur doch dieses doofe Löschen der Notizen und dann hät ichs ja sozusagen 😃



  • Wenn das der Professor liest, der Donnerstags im Raum H01.01 in FB seine Vorlesung liest 😃



  • Waaaaaaaaaaaaaaas 😃
    Ist doch wahr 😃

    FB? Edit: Achso FriedBerg 😉
    Edit2: Ach "Kampi" = Kampschulte? 😃



  • 1. Immer noch besser, als NICHTS zu tun und zu sagen "kapier ich halt ned"...
    2. Professoren halten Vorlesungen in FaceBook?

    Buster: Mach doch mal die Probe aufs Exempel und codiere den exakten und absoluten Pfad zu so einer Datei ganz oben ins main vor anderen Funktionen.

    if (remove ("c:\Hierliegt\meineDatei.txt")) fprintf (stderr, "Fehler: %s\n", strerror(errno));
    return (0);
    

    Dann schau nach ob die vorher existierende Datei weg ist und was in puncto Fehlermeldung ausgegeben wird.



  • Nee Nee 😃
    Ich glaube DAS war der Professor von mir 😃
    Iwie lustig 😃

    Aaaalso
    Das hat funktioniert .
    Hab

    int main(void) {
    
    	if (remove ("mo_notiz.txt")) fprintf (stderr, "Fehler: %s\n", strerror(errno));
    return (0);
    
    	hauptmenue();
    
    	_getch();
    	return 0;
    }
    

    das so gemacht und Montag ist verschwunden 🙂

    So jetzt probier ich mal, das alles in die Funktion zu klatschen 🙂 Dankesehr!"

    Edit: Also ich muss das ja jetzt auch wieder in ne Funktion packen...
    Und das ist doch dann eig das Selbe was ich vorher schon hatte oO



  • for(i = 0; Dateiname[i] != NULL ; i++);
    {
    if (remove(Dateiname[i]) == 0)
        printf("Notizen gel\x94scht!");
    else
        printf("Notizen konnten nicht gel\x94scht werden.");
    }
    getchar();
    }
    

    Herzlich willkommen in der schönen Welt der fiesen Fehler. Weißt Du, was der Strichpunkt am Ende der for-Zeile bewirkt?
    Der darauf folgende Codeblock wird nicht im Rahmen der Schleifendurchläufe ausgeführt, sondern nach Beenden der Schleife.
    Rate mal, welchen Wert Dateiname[i] dann hat? (null) 😉

    Der Compiler meckert deshalb nicht, weil das durchaus so oder so ähnlich gewollt sein könnte. Von der Syntax her einwandfrei, aber halt nicht ganz ergebnisorientiert, wenns um die Aufgabe geht.

    Also, Strichpunkt weg und freu' Dir ein Wiesel!



  • Yaaaa Ya Yippie Yippie Ya Ya Yey 😃

    OMG. Dieses kleine aber gar wichtige Semikolon 😃

    Mist 😃 Aber okay. Jetzt funktioniert es - endlich! 🙂
    Ich bedanke mich! 🙂

    So jetzt optimier ich das noch alles ein bisschen. Optik und so 😃

    Bei Fragen bin ich ja hier gut aufgehoben 🙂 🙂 🙂



  • Da muss ich mich ja ganz fett entschuldigen. 😡

    Entschuldigung.



  • weshalb entschuldigen?
    Wir haben Deine Prüfung unserer syntaktischen Fähigkeiten mit Müh und Not bestanden. 🙂



  • Ich habe mich bei Buster92 entschuldigt. 😉

    Aber ich denke er hat jetzt eine Menge gelernt.
    Den Fehler wird er zwar wieder machen, dann aber schneller finden. 😃



  • Ja Dirk, da hast du vollkommen Recht.

    Ja, meine Dozenten sagen auch, dass solche "Föüchtigkeitsfehler" leider desöfteren vorkommen können 😃


Anmelden zum Antworten