Programm zum Zählen von Zeichen in Datei!
-
Ich würde gerne ein Programm schreiben, das die Anzahl der Zeichen in einer Datei zählt. Der Dateiname soll als Parameter übergeben werden. Ich hab das Programm so geschrieben:
#include <iostream>
#include <string.h>
#include <fstream>
#include <cstdlib>using namespace std;
static void usage (char *porgname) {
cout << " Parameter nicht korrekt ";
exit(1);
}static void error (char *progname, char **errorMessage) {
cout << " ERROR in " << " ue5.C " << errorMessage << endl;
exit(1);
}int main (int argc, char *argv[]) {
cout << endl;
cout << endl;
FILE *datei;
char zeichen;
int zaehler = 0;
int n = atoi (argv[1]);
datei = fopen("text.txt", "r");
if (argc !=2) {
cout << " Fehler ";
}
datei = fgets(argv[1] != EOF);
{
zaehler++;
}
cout << " Die Datei enthält: " << zaehler << " Zeichen ";
fclose(datei);
}Das Programm funktioniert aber leider nicht. Es kommt immer eine Fehlermeldung. Ich bin noch ein Anfänger in C++. Könnte mir jemand helfen.
Vielen Dank im Vorraus.
-
system( "dir");
-
1. cpp-tags
2. es kommt also eine fehlermeldung ... welche denn?#include <fstream> //ifstream #include <iostream> //cout, cin, endl using namespace std; int main (int argc, char *argv[]) { if (argc != 2) return EXIT_FAIL; ifstream datei (argv[1]); datei.seekg(2); const size_t length (datei.tellg ()); cout << "Laenge in Byte: " << length << endl; }bb
-
unskilled schrieb:
datei.seekg(2);bb
Was ist denn das?
-
kirchi123 schrieb:
int n = atoi (argv[1]);
datei = fopen("text.txt", "r");
if (argc !=2) {und was soll der quatsch ?
1. convertieren des argumentes welches die datei representieren soll nach int ?
2. oeffnen von test.txt ohne die angegebene datei zu benutzen ?
3. ueberpruefen der argument count NACHDEM sie bereits bei dem unsinnigen cast verwendet wurde ?ehrlich gesagt - dein code ist richtig grausig
- wozu hast du "usage" wenn du dort nur ausgibst das der parameter falsch ist statt zu zeigen wie die app zu starten ist ?
- wo wird usage ueberhaupt benutzt?
- warum uebergibst du usage und error unbenutzte parameter ?
- warum machst du ein fopen mit test.txt aber dann ein fgets aus dem argument ?
- warum inkrementierst du einen zaehler der nur EINMAL aufgerufen wird ? (siehe das ; zeichen in der zeile zufor)raeume erstmal auf, und dann schreib auch die fehlermeldung - das ist doch so kein zustand
ps. benutz bitte den "C/C++" button um deinen code in tags zu fassen
-
Tachyon schrieb:
unskilled schrieb:
datei.seekg (2);Was ist denn das?
sry - kein Plan, was ich da wollte >< da war ich wo ein wenig geistig abwesend - oder eher bissl mehr

So sollte es richtig sein ^^datei.seekg (0, ios_base::end);bb
-
- Datei öffnen
- Zeilenweise einlesen (Zeilen können unterschiedlich lang sein) bis Dateiende erreicht.
- Zeilenlänge ermitteln und summieren
- Datei schliessen
Wenn Du die Leerzeichen nicht mitzählen willst, dann jede Zeile Zeichen für Zeichen durchgehen. Kann so schwer nicht sein!
-
kirchi123 schrieb:
Ich würde gerne ein Programm schreiben, das die Anzahl der Zeichen in einer Datei zählt.
Gibt es hier.
berniebutt schrieb:
- Zeilenweise einlesen (Zeilen können unterschiedlich lang sein) bis Dateiende erreicht.
wo lernt man das eigentlich, dass man aus einer Datei immer die Zeilen lesen soll, ganz egal wie die Aufgabenstellung ist?
Gruß
Werner
-
@ Werner Salomon: Das hat man so gelernt in Zeiten, wo es nur Compiler (nicht einmal C) gab, die nur das wesentliche bereitgestellt hatten und Bibliotheken Mangelware waren. Du kennst diese Zeiten wohl nicht, aber da hat man auch schon alles erfolgreich programmieren können!
-
berniebutt schrieb:
@ Werner Salomon: Das hat man so gelernt in Zeiten, wo es nur Compiler (nicht einmal C) gab, die nur das wesentliche bereitgestellt hatten und Bibliotheken Mangelware waren. Du kennst diese Zeiten wohl nicht, aber da hat man auch schon alles erfolgreich programmieren können!
Das ist doch kein Grund, das immer noch so zu machen. Heutzutage hat man Bibliotheken die mehr als das wesentliche bereitstellen...
Genauso könnte man sagen, früher gab es keine Autos, also laufen wir heute auch alle Strecken zu Fuß!
-
Kirchi123 hat gefragt, was er machen kann. Soll er sagen, ob es ihm hilft.

@ DerKuchen und evtl. andere: einfache Dinge programmiert man schnell und sicher selbst - hier handelt es sich um etwas einfaches, wahrscheinlich im Millisekunden-Bereich - Es lohnt keine lange Suche, denn das kann kaum wesentlich schneller sein!
@ Der Vergleich mit dem Auto hinkt gewaltig. Das Auto ist der Computer, alles andere ist die Bedienung. Der eine mag ein Schaltgetriebe, der andere ein Automatikgetriebe. Schön, wenn da jemand nicht vom Hof kommt, weil er den hyperneuen Startcode nicht kennt oder vergessen hat.

-
wird der dateiinhalt nicht eh als stream angesehen? also man kann ihn als stream verwenden.... denn ob man nun n-mal bis zum linebreak sucht oder einmal bis EOF macht doch nur verarbeitungstechnisch einen unterschied?
aber warum nicht biblioteken verwenden wenn sie da sind? klar sollte man wissen wie sie funktionieren, aber dazu hat sie ja jemand geschrieben damit man sie standardisiert verwenden kann