- LiTime Speicher und Akkus         
Ergebnis 1 bis 2 von 2

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

  1. #1
    Neuer Benutzer Öfters hier Avatar von SarthakBhatt
    Registriert seit
    11.07.2022
    Beiträge
    7

    So verwenden Sie die einfache Dateieingabe und -ausgabe in C

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Könnte mir irgendwann jemand freundlicherweise mitteilen, wie wichtige Dateieingaben und -ausgaben in C durchgeführt werden sollen. Ich habe versucht, zu scannen, aber ich konnte nur Antworten für C++ und so weiter bekommen.

    Ich versuche, fscanf und fprintf zu verwenden, um dies zu tun. Das Programm stürzt jedoch ab, sobald es diesen Teil ausführt, mit der Fehlermeldung: „Unbehandelte Ausnahme bei 0x50D39686 (msvcr120d.dll) in Test Project.exe: 0xC0000005: Zugriffsverletzung beim Schreiben von Speicherort 0xCCCCCCCC.

    HTML-Code:
    #include <stdio.h>
    
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    
    int main()
    
    {
        double things_in_file[6];
    int counter;
    FILE *file_cats;
    
    if ((file_cats = fopen("cats.txt", "r")) == NULL)
    {
        printf("This file doesn't exist.\n");
        system("pause");
        exit(-1);
    }
    
    for (counter = 0; counter <= 5; counter = counter + 1)
    {
    
        fscanf(file_cats, "%lf\n", &things_in_file[counter]);
        printf("%f\n", things_in_file[counter]);
    
    }
    
    fclose("file_cats");
    system("pause");
    
    exit(0);
    Can somebody Please help with this?

  2. #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
  •  

LiTime Speicher und Akkus