- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 2 von 2

Thema: So verwenden Sie die einfache Dateieingabe und -ausgabe in C

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    ugeek
    Gast
    Hallo SarthakBhatt,

    der Fehler steckt in dieser Zeile
    Code:
    fclose("file_cats");
    Die Anführungszeichen (Gänsefüßchen) sind hier fehl am Platz.
    Die Variable file_cats enthält einen Pointer auf irgendeinen Speicherbereich, der Informationen rund um die offene Datei enthält.
    Du übergibst jedoch dem fclose-Befehl versehentlich einen Zeiger auf den festen String "file_cats" (und alles, was danach kommt).
    Dieser befindet sich zudem in einem aus Sicherheitsgründen schreibgeschützen Speicherbereich, nämlich einer im RAM befindlichen Kopie der exe-Datei.
    Ein guter Compiler sollte solche Fehler erkennen.
    Versuch mal, ob du bei deinem Compiler Warnmeldungen oder ähnliches aktivieren kannst.

    So wird es funktionieren:
    Code:
    fclose(file_cats);
    Damit ist schon mal der konkrete Fehler aus der Welt geschafft.

    Darüber hinaus habe ich noch ein paar kleinere Überarbeitungen vorgenommen,
    so dass es den meines Wissens üblichen Gepflogenheiten entspricht.
    Man kann sich so einfach besser miteinander austauschen.
    Saubere Einrückungen sind wichtig, damit man leichter auf eine Blick sieht, was wie zusammengehört.

    Ich hoffe, ich konnte dir ein bisschen weiterhelfen, und wünsche dir viel Erfolg mit C.

    Code:
    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
      double numbers[6] = {0,0,0,0,0,0};
      int i;
      FILE *fp;
    
      if ((fp = fopen("cats.txt", "r")) == NULL)
      {
        printf("This file doesn't exist.\n");
        return 1; /* ungleich 0 heisst Fehler */
      }
    
      for (i=0; i < 6; i++)
      {
        if(1 == fscanf(fp, "%lf\n", numbers + i))
        {
          printf("numbers[%d] = %f\n", i, numbers[i]);
        }
        else
        {
          printf("error reading numbers[%d.\n", i);
        }
      }
    
      fclose(fp);
      return 0; /* 0 heisst OK */
    }
    Geändert von ugeek (16.07.2022 um 16:00 Uhr) Grund: Stil einheitlicher

Ähnliche Themen

  1. Ausgabe eines Bytes auf ein LCD dauert länger als die Ausgabe eines Strings?
    Von Thomas E. im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 20.03.2012, 22:43
  2. LCD Ausgabe
    Von Stas im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 27.05.2011, 20:48
  3. Wie einfache Eingabe/Ausgabe realisieren?
    Von helipaddi im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 11.08.2009, 12:30
  4. Einfache Frage PORTC Ausgabe
    Von kirobi im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 10.04.2009, 12:55
  5. Ausgabe auf dem PC
    Von Nikolaus188 im Forum Elektronik
    Antworten: 31
    Letzter Beitrag: 07.08.2006, 17:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests