Zeilen in Datei zählen
-
Hi,
ich will ein Prog schreiben was mir Ausgibt wie viele Zeilen in einer Datei stehen.
Aber im Programm ist ein Fehler drin den ich nicht verstehe.
Hier der Code:#include "stdafx.h" #include <fstream> #include <iostream> #include <string> using namespace System; using namespace std; int main(array<System::String ^> ^args) { ifstream quelle; string quelldateiname; cout << "Quelldatei?...(Kompletten Pfad angeben!!)"<<endl; cin >> quelldateiname; quelle.open(quelldateiname.c_str(), ios::binary|ios::in); if(!quelle) { cerr << quelldateiname << "kann nicht geoeffnet werden!" <<endl; exit(-1); } cout << "Zieldatei?..."<<endl; string zieldateiname; cin >> zieldateiname; ofstream ziel(zieldateiname.c_str(), ios::binary|ios_base::app); if(!ziel) { cerr << zieldateiname <<"kann nicht geoeffnet werden!"<<endl; exit(-1); } //Hilfsvariablen(zähler,hilfspuffer) int cout=0; char line[1024]; while(quelle.eof()) { //zeile einlesen fgets(line,1024,quelldateiname); //zähler um ein erhöhen ->zeile wird gezählt cout++; } ziel.put(cout); cout <<"...Zeahlvorgang abgeschlossen..."<<endl; }Und zwar meckert der Compiler unter anderem an der stelle mit "fgets" .
Ich bitte um hilfe.
MFG steve
-
Was sagt denn der Compiler ?
-
statt
char line[1024]; while(quelle.eof()) { //zeile einlesen fgets(line,1024,quelldateiname); //zähler um ein erhöhen ->zeile wird gezählt cout++; }nimm
std::string text; while(getline(quelle,text) cout++;und dann benenn die Variable cout um in count, könnte sonst auch Probleme mit sich bringen.
-
MiP schrieb:
statt
char line[1024]; while(quelle.eof()) { //zeile einlesen fgets(line,1024,quelldateiname); //zähler um ein erhöhen ->zeile wird gezählt cout++; }nimm
std::string text; while(getline(quelle,text) cout++;und dann benenn die Variable cout um in count, könnte sonst auch Probleme mit sich bringen.
...und im open() das ios::binary streichen
-
Danke funktioniert alles soweit gut.
Compiler meckert nich mehr und prog wird ausgeführt.
Danke schon ma hier an dieser stelle an alle.
Aber der schreibt mir in die Datei die er erstellt ein ASCII zeichen rein.

-
Du musst hier
ofstream ziel(zieldateiname.c_str(), ios::binary|ios_base::app);auch das ios::binary wegnehmen
Edit:
http://www.cplusplus.com/reference/iostream/ofstream/open/
-
hab ich auch schon gemacht..immer noch ein ASCII-Zeichen

mfg steve
-
Problem gefunden:
int count=0; string text; while(getline(quelle,text)) { count++; } ziel.put(count);Die Variable count ist ein Int-wert, aber die Fktn. ziel.put(), nimmt nur char werte.
D.h. das sie die Int-werte in char umwandelt.
Oder lieg ich da falsch?
Wenn nicht wie schreibe ich dann die Int-werte in die Datei?
gruß
-
http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/
Edit:
zBziel << count;
-
Jop danke hab es gerade auch gefunden auf den link.
Programm funzt,alles tip top!
Vielen dank......
MFG Steve
-
MiP schrieb:
und dann benenn die Variable cout um in count, könnte sonst auch Probleme mit sich bringen.
Was wiederum Probleme mitbringt, sobald man
<algorithm>inkludiert und den Namensraum offenlegt. Wenn man nicht so schreibfaul ist, kann sich dasstd::unter Umständen lohnen...