Diskussion:C-Programmierung: Dateien

Aus Wikibooks
Zur Navigation springen Zur Suche springen

scanf 1[Bearbeiten]

Sorry, aber in diesem Artikel wird beim Auslesen der Datei fscanf verwendet. Wo sind denn bitte fgetc und fputc? Zum Ausgeben von Dateiinhalten braucht man keine ganzen char arrays. Und fscanf mit Format %100c ist wohl auch nicht gerade der primäre Gebrauch von fscanf.

Hallo 84.162.79.151[Bearbeiten]

Kannst Du das "EOF-Markierung wird nicht gelöscht" bei a erklären? Im Bezug auf EOF gibt es meines Wissens keinen Unterschied zw. a und a+.--Jan 22:35, 1. Nov. 2006 (CET)

"Echte Dateien"[Bearbeiten]

Gehören die ganzen Funktionen überhaupt zum C-Standard? Und welche Vorteile sollen die im Gegensatz zu fopen und co. haben?

Datei schließen: Unverständliche Formulierung[Bearbeiten]

"Alle nicht geschriebenen Daten des Stromes *datei werden gespeichert," finde ich etwas widersprüchlich. Kann das etwas mehr ausgeführt werden, weshalb gerade etwas noch nicht vollendetes einen Einfluss auf die Daten haben soll? Was ist mit "geschrieben" gemeint, welcher Vorgang wurde veranlasst und was wurde daraufhin durchgeführt, bevor die Datei geschlossen wurde und worin besteht in der Datei dann der Unterschied zum Zustand vor dem Öffnen? --Stahlpolymer 11:09, 12. Aug. 2016 (CEST)

Ich kann deine Zweifel an diesem Text nachvollziehen. Die Ziele, etwas kurz und verständlich und dennoch exakt darzustellen, können in der Tat widersprüchlich wirken. Etwas verständlicher wird es zusammen mit der weiter unten kurz verwendeten Funktion fwrite (fast ohne Erklärung).

Der "automatisch zugewiesene Buffer" dient zum Zwischenspeichern von Daten beim Schreiben: Damit das Betriebssystem nicht ständig (wie im fwrite-Beispiel) winzige Brocken auf die Festplatte schreiben muss, gelangt alles erst einmal in diesen Buffer; erst wenn der Buffer voll ist oder (wie durch fclose) endgültig geschrieben werden soll, landet der Inhalt wirklich auf der Festplatte.

Noch klarere Antworten kann ich nicht geben: Meine C-Kenntnisse waren auch früher nur rudimentär vorhanden und sind jetzt erst recht verschüttet. Deshalb darf ich mich auch nicht am Text selbst versuchen; aber vielleicht hilft es dir ein wenig beim Verständnis. -- Jürgen 12:02, 12. Aug. 2016 (CEST)

scanf 2[Bearbeiten]

Das Programm unter C-Programmierung:_Dateien#Dateien_zum_Lesen_öffnen gibt mit fscanf(datei, "%s", text)

   Hallo,

aus.

Man könnte getline verwenden:

   FILE *datei = fopen("testdatei.txt", "r");
   if (datei != NULL) {
       char* text;
       size_t buflen = 0;
       size_t textlen = getline(&text, &buflen, datei); // liest auch das Zeilenende
       if (textlen == -1) {
           printf("Fehler beim Lesen der Datei");
           exit(1);
       }
       if (textlen != 0) {
           if (text[textlen - 1] == '\n') {
               text[textlen - 1] = 0; // Zeilenende entfernen
           }
           printf("buflen: %d, content: %s\n", buflen, text);
       }
       free(text); // valgrind --leak-check=full ./a.out
       fclose(datei);
   }

--2A02:908:2610:3040:83F8:A7E9:2F12:77C8 18:57, 5. Jan. 2020 (CET)