» Daten einlesen

Mittelwert Funktion in CNeuen Thread eröffnenNeue Antwort erstellenProblem bei der Programmausführung C unter Windows
AutorNachricht
Beobachter 
Anmeldedatum: 12.01.2012
Beiträge: 1
12.01.2012, 15:02
zitieren

Hallo!

Ich möchte Daten aus einer Textdatei einlesen.
Dazu habe ich folgendes programmiert:

#include <stdio.h>
#include <stdlib.h>

int main(void) {

FILE * file;
char line[10];

file = fopen("ex1.txt","r");

if (file){

  while (!feof(file)){

    fgets(line,10,file);
    printf("line: %s",line);

  } //(!feof(file))

}// if (file)

fclose(file);
return EXIT_SUCCESS;
}

Das funktioniert soweit,aber ich habe einen seltsamen Effekt, den ich mir nicht erklären kann.


Wenn ich folgende Datei einlese:
10
20
30
40

bekomme ich als Ausgabe:

line: 10
line: 20
line: 30
line: 40
line: 40

also die letzte Zeile doppelt.

Warum ist das so? eigentlich sollte das Dateiende doch bei 40 erreicht sein?


pn
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
15.08.2012, 15:59
zitieren

Hier eine mögliche Erklärung:

Die while-Schleife wird solange ausgeführt, bis feof
den Wert 1 zurückgibt, der bei feof das Dateiende anzeigt.
Zunächst wird aber der nächste String mit fgets eingelesen.
Bei noch nicht erreichten Dateiende wird der String in line
eingelesen. Falls jedoch das Dateiende erreicht ist, wird der
String line nicht überschrieben und zunächst ausgedruckt.
Der zuletzt eingelesene String wird 2mal angezeigt.
Erst dann wird das Programm beendet.

Korrigierte Fassung hier:


#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main(void) {

FILE * file;
char line[10];

file = fopen("ext1.txt","r");


if (file)
{

while (!feof(file))
 {
  fgets(line,10,file);
  if((feof(file)) == 0)
   printf("line: %s",line);
  else
   printf("\nDateiende erreicht");
 }

}
 else
 printf("\nDatei nicht gefunden");
fclose(file);
printf("\nZum beenden des Programms bitte Taste druecken");
getch();
return 0;
}


Manchmal haben auch alte Compiler einen Wert fürs lernen.
Gruß Guiseppe


 1x  bearbeitet
pn
Gast 
15.08.2012, 15:59
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Daten einlesen" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
CSV in C einlesen
hallo! ich bin neu auf dem Forum und suche antworten... ich schreibe ein Programm für mein Job wo ich Autos einlesen und ausgeben muss die bei einer Werkstatt waren, aber mein Compiler sagt immer "Floating point not loaded" und ich weiß nicht...
[C]von Johnathan Frakes
1
216
15.02.2022, 17:12
steinsgate
Programm zum Einlesen von Dateien
Hallo, ich bin im Bereich der Programmierung (bis auf Access) komplett unerfahren, daher suche ich hier Hilfe. Folgende Aufgabenstellung: Ich speichere Emails (Anzahl unbekannt) aus einem Emailprogramm heraus in einen bestimmten Ordner. Die Daten...
[Allgemein]von Maik6464
1
370
27.02.2011, 15:07
Maik6464
HILFE beim einlesen in C
hallo und zwar möchte ich einzelne buchstaben einlesen jedoch klappt es für meinen zweiten buchtstaben nicht mehr das programm überspringt immer mein scanf, weiß jemand wieso und wie man das ansonsten machen...
[C]von dsquared2
3
196
01.05.2023, 14:02
Guiseppe
Probleme bei einlesen von arrays über Console
Hallo liebe Community, ich bin seit heute neu hier im Forum. Ich habe für mein Studium die Aufgabe bekommen, zwei Arrays über die Console einzulesen und diese dann zu einem Array zu fusionieren und dann aufsteigend zu sortieren. Bis jetzt habe ich...
[C]von Ravensouth
0
234
27.11.2021, 11:49
Ravensouth
Fehlermeldung beim Einlesen eines Buchstabens mit scanf
hi, ich habe ein problem in meiner Funktion "Spaltenabfrage"... wenn ich ungültige Zahlen eingebe, ist es kein Problem, da spuckt er schön brav die Fehlermeldung aus. Wenn ich jetzt allerdings nen Buchstaben statt ner Zahl einlese, kommt ne...
[C]von mones333
1
206
28.02.2021, 12:13
mgutt
Hilfe bei C-Programm / Zahlen aus einer Datei in ein Array einlesen.
Hallo, ich bräuchte mal eure Hilfe für ein kleines C-Programm: - in einer TXT-Datei befinden sich als Beispiel 3 Zahlenreihen mit jeweil 6 Zahlen in 1 Reihe: BSP: Test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Die Zahlen sind durch ein...
[C]von Vision73
0
180
15.05.2023, 16:28
Vision73
Mein Programm soll einen zu langen string in ein array einlesen, überschreiben und ausgeben
Hallo, Kann mir jemand sagen, warum es hier nicht wie gewünscht z.B. die ausgabe "hellooo" gibt sondern stack smashing? Woher kommt die leerzeile bei meiner Terminal ausgabe: helloooo &#x2A;&#x2A;&#x2A; stack smashing detected...
[C]von john_38
2
62
10.01.2024, 07:09
john_38
externe Datei als Tabelle "wikitable" einlesen
Hallo, bin auf der Suche nach einer Möglichkeit z.B. eine Textdatei mit Formatierung einer Wiki Tabelle als Inhalt einzulesen und diese auf einer Wiki-Seite anzuzeigen. Hier mal ein Beispiel einer solchen Text Datei &#123;|...
von sfab85
4
2.239
13.02.2014, 13:25
sfab85
CNC-Daten für LSD´s
Hallo leute, habe mal im Forum gelesen, dass es einmal bei Ebay eine CD verkauft wurde, mit den Daten für eine Anfertigung der LSD-Scharniere mit der CNC-Fräse. Hat zufällig jemand noch die CD oder die Daten rumliegen? Hätte nämlich Zugang zu solch...
von toema
5
296
16.01.2012, 22:00
toema
daten vom eg9??
hi, wer kann mir genaue daten vom eg9 geben!? also einmal brächte ich das leergewicht so wie es im schein oder brief steht, und das zulässige gesamtgewicht. danke...
von kado
2
439
21.01.2006, 16:05
kado
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |