Und Nochmal DATEIEN ( ÖFFNEN; BEARBEITEN; SCHLIEßEN)
-
Das folgende Programm gibt nichts aus! Ich bekomm das nicht hin, sodass bei jeder Öffnung der Datei eine Zeile angehangen wird und vor jeder Zeile die Zeilennummer steht!
Danke für eure Hilfe!!!

Das Programm:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
void schreiben(FILE*);
void lesen(FILE*);
int anz2=0;
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
fprintf(dat,"&d\t",anz2);
do
{
z=getchar();
if(z!='\n')
{
fputc(z,dat);
anz++;
}
}while((z!='\n')&&(anz<=100));
fclose(dat);
}
void lesen(FILE* read)
{
read=fopen("D:\\daten.txt","r");
char zeichen;
while(!feof(read))
{
zeichen=fgetc(read);
cout<<zeichen;
}
fclose(read);
}
-
Wir sind hier im C++-Forum verwende std::fstream (oder eben ofstream bzw. ifstream) und keine Header mit .h. Die sind veraltet und bereits seit Jahren nicht mehr gültig. Außerdem heißt es int main()
Beim Posten kannst du dann auch noch gleich [cpp ]-Tags verwenden, dann ist da schönes Syntax-Highlighting.Entschuldige, aber in diesem Codeabschnitt ist formal so ziemlich alles falsch was nur geht.
Gruß
-
wulvpak schrieb:
fprintf(dat,"&d\t",anz2);
fprintf(dat,"%d\n",anz2);
Gruß
Werner
-
Warum machst du damit denn nicht in deinem alten Thread weiter?
Wie ich dort sagte, mußt du die Zeilenzahl zumindest am Beginn korrekt initialisieren und anschließend auch auf die globale Variable zugreifen (die lokale Variable 'anz' in Schreiben() wird bei jedem Aufruf neu zurückgesetzt).@Werner: Das mit dem \t stammte von mir und war absichtlich
(damit die Zeilennummer an den Anfang der betroffenen Zeile kommt)
-
Hier geht's weiter: http://www.c-plusplus.net/forum/viewtopic-var-t-is-128650.html