Datei öffnen, bearbeitn und schließen
-
Hi Leute!
Ich habe eine Hausaufgabe die ich lösen möchte! Habt ihr Lust mir zu helfen?
Wie kann ich es (ohne große Umstände) umschreiben sodass, bei jedem Aufruf der Datei eine neue Zeile in der vorhandenen Datei angefügt wird. Bei der Ausgabe soll die jeweilige Zeilennummer am Anfang der Zeile stehen!
Oh Mann, ich finde das schon einen dicken Brocken!
Ich würde mich freuen wenn ihr mir helfen könntet!!!
Das ist das Programm!!!!#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
void schreiben(FILE*);
void lesen(FILE*);
void main()
{
FILE* read=NULL;
FILE* dateizeiger=NULL;
cout<<" Geben Sie einen Text ein <Abbruch mit Eingabe>: "<<endl;
schreiben(dateizeiger);
system("cls");
cout<<" In der Datei steht: "<<endl;
lesen(read);
getch();
}
void schreiben(FILE* dat)
{
char z; int anz=1;
dat=fopen("D:\\daten.txt","a"); // Attribut=Öffnungsmodus
cout<<endl;do
{
z=getche();
if(z!='\r')
{
fputc(z,dat);
anz++;
}
}while((z!='\r')&&(anz<=100));
fclose(dat);
}
void lesen(FILE* read)
{read=fopen("D:\\daten.txt","r");
char zeichen; int z=1;
while(!feof(read))
{
zeichen=fgetc(read);
cout<<zeichen;
}
cout<<endl;
fclose(read);
}Ich glaube man muss nur was in den beiden Fkt. (schreiben,lesen) verändern!!!!
DANKE

-
Erstens solltest du fstreams verwenden, die sind einfacher zu handhaben als C's FILE*

Zweitens: man: fopen(name,"a") ist schon richtig zum Anhängen der Daten, allerdings mußt du dir noch überlegen, wie du die Zeilennummer korrekt zählst (dazu müßtest du die Datei mit "a+" öffnen und vor dem Schreiben die bisherigen '\n' zählen).
-
Hi,
danke nochmal, aber ich muss das so machen.(wegen fstream)
Ich hab mein Lehrer gefragt ob ich das mit fstream machen kann. Da hat er nur gemeint um gut zu programmieren zu können muss ich auch sowas können! Ich hätte da gleich noch eine Frage!
Und zwar: Ich weiß nicht wie ich die Zeilennummer zählen soll, und ich weiß nicht wie ich bei jedem öffnen der Datei auch noch die Nummer vor jede Zeile schreibe!!!???Ich hab gedacht mit einer globalen Variable anz die ich bei jedem öffnen hochzähle, aber da komm ich nicht auf das was ich möchte! Und zum zweiten; wie bekomm ich das hin das die Nummer vor jeder Zeile steht? Der Zeilenumbruch macht mich fertig!!!aaahhhhhhhhhh

Danke für ihre Bemühungen mir zuhelfen!!!!!

-
wulvpak schrieb:
Und zwar: Ich weiß nicht wie ich die Zeilennummer zählen soll, und ich weiß nicht wie ich bei jedem öffnen der Datei auch noch die Nummer vor jede Zeile schreibe!!!???
Ich hab gedacht mit einer globalen Variable anz die ich bei jedem öffnen hochzähle, aber da komm ich nicht auf das was ich möchte! Und zum zweiten; wie bekomm ich das hin das die Nummer vor jeder Zeile steht? Der Zeilenumbruch macht mich fertig!!!aaahhhhhhhhhh

Mit der globalen Variablen hast du das Problem, daß du sie korrekt initialisieren mußt, z.B. so:
int Zeilenzahl=0; void init() { FILE* dat=fopen("D:\\daten.txt","r"); while(!eof(dat)) { char ch=fgetc(dat); if(ch=='\n')Zeilenzahl++; } }(bin mir nicht ganz sicher, eventuell muß der Wert eins größer oder kleiner sein)
zum Ausgeben kannst du dann fprintf verwenden :
frpintf(dat,"%d\t",Zeilenzahl); do { z=getchar(); if(z!='\n')//'\n' ist die offizielle Kennung für ENTER { fputc(z,dat); anz++; } } while((z!='\n')&&(anz<=100));PS: Was lernt ihr überhaupt? C oder C++? (ich meine: wenn man schon mit C++ arbeitet, sollte man dessen Möglichkeiten auch nutzen dürfen)
Edit: Achja, wenn du die FILE's sowieso innerhalb der Funktionen öffnest, verarbeitest und wieder schließt, brauchst du sie nicht als Parameter durch die Gegend schleifen

-
Ich kann nur tausendmal danke sagen!!!!

Naja der Leistungskurs heißt C++, aber wir lernen auch c! Zum Beispiel haben wir die Zeiger kennengelernt die man eigentlich aus C kennt, dann hat der Lehrer gesagt die brauchen wir VORERST nicht mehr weil wir dann wieder C++ gemacht haben und die Referenzen für die Zeiger genommen haben!!! Aber jetzt kam diese Struktur FILE* bei der man nur mit Zeiger abeiten kann!!! Ich finde den Lehrer sehr gut (was die Kompetenz betrifft) aber vom Lehrstil, naja!!!
guck doch einfach mal auf www.meier-erfurt.de dann siehst du auf welcher Schule ich bin und wer mein Lehrer ist!!!!!
Danke nochmal für ihre Hilfe!!!!!!!!!