C fscanf Frage
-
Hallo hätte jemand von euch für folgende Aufgabe einer Lösung anzubieten?
Problem bei mir ist das ich immer nur mit der fscan Funktion die zwei Zeichen bis zum Punkt eingelesen bekomme.fscan liest dann nicht weiter die Zeichen ein.Bin hier an der Klausuraufgabe am verzweiflen....In der Datei eingabe.txt beginnt jede Zeile mit einem Datum der Form TT.MM.JJJJ, dem ein
Zeilenumbruch folgt. D.h. in jeder Zeile steht genau ein Datum. Sie sollen nun die Datei
kopieren, wobei die Punkte in einem Datum durch Doppelpunkte ersetzt werden. D.h. aus
“16.07.2007“ in der Datei eingabe.txt wird “16:07:2007“ in der Datei ausgabe.txt.
Ergänzen Sie die Funktionen main und copyDates, so dass die Funktion copyDates
sämtliche Daten aus der Datei eingabe.txt wie beschrieben in die Datei ausgabe.txt
mittels der Funktionen fscanf und fprintf kopiert und die Anzahl der kopierten Daten als
Ergebnis zurückliefert. Die entsprechenden Dateien sollen in main geöffnet werden, wobei auch
die beiden Dateizeiger initialisiert werden.#include<stdio.h> #include<stdlib.h> int copyDates ( FILE *fin, FILE *fout) { } int main ( void ) { FILE *filein = NULL, *fileout = NULL; int noDates ; char inputName[] = "eingabe.txt", outputName[] = "ausgabe.txt"; noDates = copyDates(filein,fileout); printf("Datei %s enthaelt %d Daten\n", outputName, noDates); return 0; }
-
#include<stdio.h> #include<stdlib.h> int copyDates ( FILE *fin, FILE *fout) { int iTag=0, iMonat=0, iJahr=0, iDateCount=0; while(!feof(fin)) { fscanf(fin, "%d.%d.%d\n", &iTag, &iMonat, &iJahr); fprintf(fout, "%0.2d:%0.2d:%d\n", iTag, iMonat, iJahr); iDateCount++; } return iDateCount; } int main ( void ) { FILE *filein = NULL, *fileout = NULL; int noDates; char inputName[] = "eingabe.txt", outputName[] = "ausgabe.txt"; filein = fopen(inputName, "rt"); fileout = fopen(outputName, "wt"); if(filein != NULL && fileout != NULL) { noDates = copyDates(filein,fileout); printf("Datei %s enthaelt %d Daten\n", outputName, noDates); } else { printf("Fehler beim Datei öffnen!!\n"); } return 0; }
Ungetestet, müsste aber gehen
-
Sehr cool danke funktioniert.Nur noch zwei kleine Fragen.Mir wurde gesagt dies wäre das falsche Forum für diese Art von Problem.Wo sollte ich es denn eigentlich hin Posten?Und die zweite Frage: Gehe ich richtig davon aus das der Teil
while (!feof(fin))
abfrägt,solange das Ende der gesamten Datei nicht erreicht ist.
-
XSilencer schrieb:
Sehr cool danke funktioniert.Nur noch zwei kleine Fragen.Mir wurde gesagt dies wäre das falsche Forum für diese Art von Problem.Wo sollte ich es denn eigentlich hin Posten?Und die zweite Frage: Gehe ich richtig davon aus das der Teil
while (!feof(fin))
abfrägt,solange das Ende der gesamten Datei nicht erreicht ist.
Ich denke, eigentlich sollte das ins ANSI C-Forum.
genau, feof(fin) prüft, ob das Dateiende erreicht ist, also läuft bei !feof(fin) die while-Schleife solange bis das Dateiende erreicht ist.
-
Dank dir!