Windows-Fehlermeldung beim Ausführen meines Programms...



  • Hallo an Alle...

    Habe in den letzten zwei Stunden versucht, ein kleines Programm zu schreiben. Es soll eine Übung für mich selber sein, denn ich möchte lernen wie ich Daten aus einem File auslesen, verarbeiten und wieder ausgeben kann. (Also in der Konsole)

    So sieht aktuell mein Quellcode aus:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <windows.h>
    
    #define LINE_LENGTH 50
    
    main()
    {
      FILE* fp;
      char wortAusListe[LINE_LENGTH];
      int zufallszahl;
      int linie = 0;
    
      srand ( time(NULL) );
      zufallszahl = rand() % 50 + 0;
    
      fp=fopen("input.txt","r");
    
      while ( (fgets(wortAusListe, LINE_LENGTH, fp) != NULL) && (zufallszahl != linie) ) 
      {
        linie++;
      }
      printf("%s", wortAusListe);
      printf("Zufallszahl: %i", zufallszahl);
      fclose(fp);
      fflush(stdin);
      getchar();
      return 0;
    }
    

    Die Variable Linie dient der aktuellen Linie, also sobald die while Schleife von einer Linie gelesen hat, und der Inhalt der Variablen "linie" noch nicht mit der Zufallszahl übereinstimmt, wird die aktuelle Zeilenzahl inkrementiert. SO weiss ich wo ich stehe und kann dies mit der Zufallszahl vergleichen. Mit dem ganzen will ich erreichen, dass sich durch die Zufallszahl eines der 50 Wörter schlussendlich im char-array "wortAusListe" befindet. Also wird bei jedem Durchlauf ein neues Wort herausgesucht.

    Das Text-File enthält 50 Wörter, das sieht dann etwa so aus:

    Wort1
    Wort2
    Wort3
    Wort4
    Wort5
    Wort6
    Wort7
    Wort8
    Wort9
    Wort10
    Wort11
    Wort12

    Also Wort1 steht auf Zeile 1 und Wort2 auf Zeile 2 usw...
    Variable "linie" = aktuelle Zeile

    Nun kommt beim ausführen so eine super aussagekräftige senden/nicht senden Fehlermeldung und die Konsole wird geschlossen. Bin echt langsam verzweifelt, ich weiss nicht, wo der Fehler liegt -.- 😞

    Ich hoffe ihr könnt mir helfen! Danke schon mal im Voraus..

    mfg PapaNoah



  • ... läuft bei mir ohne Änderung und ohne Probleme ...

    Überprüf mal, ob Dein fopen richtig funktioniert.



  • Entschuldige die Frage aber wie kann ich das Überprüfen? Mit welchem Editor hast du es ausprobiert?

    #EDIT 15:21 Uhr

    Entschuldige ich habe das Problem gefunden, hatte die Text-Datei nicht am gleichen Ort wie die Exe, darum isses abgestürzt. Trotzdem Danke für deine Hilfe!

    mfg PapaNoah



  • Wenn fopen fehlschlägt (zB weil die Datei nicht gefunden wird), gibt es NULL zurück.
    Also:

    if((fp=fopen("input.txt","r")) == NULL)
    Fehler();



  • PapaNoah schrieb:

    Entschuldige die Frage aber wie kann ich das Überprüfen? Mit welchem Editor hast du es ausprobiert?

    #EDIT 15:21 Uhr

    Entschuldige ich habe das Problem gefunden, hatte die Text-Datei nicht am gleichen Ort wie die Exe, darum isses abgestürzt. Trotzdem Danke für deine Hilfe!

    mfg PapaNoah

    Deshalb ist es immer wichtig, bei allen kritischen Funktionen den Fehlerfall zu berücksichtigen. In dem Fall musst du, wie Belli geschrieben hat, einfach den Rückgabewert von fopen checken. Diese Vorgehensweise solltest du dir besser gleich von Anfang an angewöhnen. 🙂


Anmelden zum Antworten