Zum Inhalt springen

Programm zum Zählen von Zeichen in Datei!


kirchi123

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Folgendes Beispiel sollte die Größe der Datei eigentlich ermitteln:


  FILE * pFile;

  long size;


  pFile = fopen ("myfile.txt","rb");

  if (pFile==NULL) perror ("Error opening file");

  else

  {

    fseek (pFile, 0, SEEK_END);

    size=ftell (pFile);

    fclose (pFile);

    printf ("Size of myfile.txt: %ld bytes.\n",size);

  }

  return 0;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde gerne ein Programm schreiben, das die Anzahl der Zeichen in einer Datei zählt.
Sollst du wirklich zählen, oder reicht es, die Größe der Datei zu ermitteln?

#include <iostream>
Soweit OK.

#include <string.h>
Die Verwendung der C-Standardheader ist in C++ deprecated. Richtig müsste es <cstring> heißen. Du verwendest allerdings nichts aus diesem Header.

#include <fstream>
Du verwendest (warum auch immer) die C-Datei-API. Dafür brauchst du nicht <fstream> sondern <cstdio>. Ich würde aber empfehlen, das Programm von fopen auf fstream umzustellen.

static void usage (char *porgname) {

cout << " Parameter nicht korrekt ";

exit(1);

}

Diese Funktion wird gar nicht benutzt. Und selbst wenn sie benutzt würde, ist der Parameter unnötig. Und warum ist die Funktion static?

static void error (char *progname, char **errorMessage) {

cout << " ERROR in " << " ue5.C " << errorMessage << endl;

exit(1);

}

Siehe oben, Funktion wird nicht benutzt. Der Parameter progname auch nicht.

datei = fgets(argv[1] != EOF);
fgets liest Zeilen ein. Das ist nicht sonderlich sinnvoll, wenn du Zeichen zählen willst. Außerdem sollte das wohl eine Schleife sein.

Das Programm funktioniert aber leider nicht. Es kommt immer eine Fehlermeldung.
Und warum schreibst du nicht, wie die lautet? Warum muss jeder, der dir helfen will, erst selbst das Programm durch einen Compiler jagen?
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab mir mal gedacht ich frag mal ohne die Fehlermeldung dazuzuschreiben, weil vielleicht jemandem schon einfach im Programm was auffällt, aber die Fehlermeldungen lauten:

C++ forbids the comparison between pointer and integer.

Und dann noch eine zweite:

cannot convert 'bool' to 'char*' for argument '1' to char* fgets(char*, int, FILE*).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das bedeutet den das?
Das bedeutet, dass du nicht meinem Rat gefolgt bist, das Programm auf fstream umzustellen.

Deswegen ist es auch wenig sinnvoll, wenn du nach Anregungen fragst, ohne den aktuellen Code zu zeigen. Dass du das Öffnen und Lesen "hinbekommen" hast, hilft uns nicht weiter, weil wir nicht wissen, wie du es hinbekommen hast.

Wenn du bei fopen bleiben willst, solltest du die Funktion fgetc benutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...