» Kleines Tool um eine Datei als Statistik zu zeigen!

Verschlüsselung von Text-Dateien mit vigenere-TafelNeuen Thread eröffnenNeue Antwort erstellenKleiner Primzahlenrechner mit Beispiel zum Verschlüsseln
AutorNachricht
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
28.02.2020, 15:22
zitieren

Hallo Leute!

Hier ein kleines Projekt, bei der man bei einer Datei die Bytes zählen kann.
Das kann zum Beispiel nützlich sein, wenn man wissen will, ob und wie viele
Steuerzeichen von ASCII-Nr.0 bis ASCII-Nr.31 vorhanden sind.
Danach kann man die Statistik abrufen, wie oft welches Byte vorkommt.
zuerst showfile.h

#ifndef SHOWFILE_H_INCLUDED
#define SHOWFILE_H_INCLUDED

#include <iostream>
#include <fstream>
#include <iomanip>
#include <unistd.h> // wegen getcwd()
#include <cstdlib>  // wegen EXIT_SUCCESS


int getuchar(std::fstream& quelle);


class filestatis
{
 public:
     filestatis(){};
~filestatis(){};

std::fstream quelle;
char dateiname[300];
char curverz[300];
int zeimen;
int maxletter;
int slei;
int letter;
int zeichen[300];

     int hauptmenue(void);
int atoint(char letter);
void showstatistik(void);
void getdatname(void);
int LeseDateiein(void);
void getcurdir(void);
void ShowSteuerzeichen(void);

};

#endif // SHOWFILE_H_INCLUDED


dann showfile.cpp

#include "showfile.h"

//Umwandlung von signed char zu signed int um
int atoint(char letter)
{
 int rewer;
 rewer = (int)letter;
 if ( rewer < 0)
  rewer += 256;
// printf("*%3d=%3d* ", rewer, letter);

 return rewer;
}

int filestatis::hauptmenue(void)
{
  int wohin = 1;
  std::cout << "\nDatei Statistik" << std::endl;
  std::cout << "Beenden..............1" << std::endl;
  std::cout << "Datei lesen..........2" << std::endl;
  std::cout << "Statistik zeigen.....3" << std::endl;
  std::cout << "Zeige Steuerzeichen..4" << std::endl;
  std::cout << "Ihre Wahl: ";
  std::cin >> wohin;
  std::cout << std::endl;
return wohin;
}

//Liest ein signed char ein, wandelt es in unsigend char um, Ausgabe als int
int getuchar(std::fstream& quelle)
{
 int dummy = 0;
 char letter;

 if (!quelle.eof())
 {
  quelle.get(letter);  // get kann nur signed char von Files lesen
  dummy = (int)letter;
  if ( dummy < 0)
   dummy += 256;
  dummy = atoint(letter);
 }

return dummy;
}

void filestatis::showstatistik(void)
{
 int slei;
 unsigned char buchsta;
 
  std::cout << std::endl<< "Zeige Dateistatistik" << std::endl;
   
    for (slei = 0; slei <= 255; slei++)
       {
        if ((slei >= 32) && (slei < 127))
         buchsta = slei;
          else buchsta = 32;
        if (zeichen[slei] > 0)
std::cout << "\nZeichen " << buchsta << " Nr.: " << std::setw(3) << slei << "  Menge: " << std::setw(10) << zeichen[slei];
       }
 std::cout << std::endl;
}

void filestatis::getdatname(void)
 {
   std::cout << "\nBitte geben Sie den Dateinamen ein: ";
   std::cin >> dateiname;
   std::cout << std::endl;
 }
 
 int filestatis::LeseDateiein(void)
 {
   quelle.open(dateiname, std::ios_base::in);
  if (!quelle )
   {
    std::cout << "\nDatei konnte nicht geöffnet werden";
    return -1;
   }
  zeimen = 0;
  maxletter = 0;
  for (slei = 0; slei <= 255; slei++)
   zeichen[slei] = 0;

  while(!quelle.eof())
   {
    letter = getuchar(quelle);
    if (letter > maxletter) maxletter = letter;
    zeichen[letter]++;
    zeimen++;
   }

  quelle.close();
  std::cout << "\nDatei\n" << dateiname <<"\nwurde geschlossen\nLänge: " << zeimen << " Byte";
  std::cout << "\nHöchstes Zeichen: " << maxletter << std::endl;;
 
 return 0;
 }
 
void filestatis::getcurdir(void)
{
  if (getcwd(curverz, sizeof(curverz)) == NULL)
    perror("getcwd() error");
   else std::cout << "current DIR: " << curverz << std::endl;
}

void filestatis::ShowSteuerzeichen(void)
{
std::cout << std::endl << "ASCII-Steuerzeichen" << std::endl;

std::cout << "Bedeutung der ASCII-Zeichen von 0 bis 32 als Steuerzeichen für" << std::endl;
std::cout << "Datenübertragung, Drucker, Bildschirmsteuerzeichen, usw.:" << std::endl;
std::cout << "00 NULL, no Operation, NUL keine Operation" << std::endl;
std::cout << "01 Start of Heading SOH Vorspannanfang" << std::endl;
std::cout << "02 Start of Text STX Textanfang" << std::endl;
std::cout << "03 End of Text ETX Textende" << std::endl;
std::cout << "04 End of Transmission EOT Übertragungsende" << std::endl;
std::cout << "05 Enquiry ENQ Stationsanruf" << std::endl;
std::cout << "06 Acknowledge ACK Bestätigung" << std::endl;
std::cout << "07 Bell BEL Klingel" << std::endl;
std::cout << "08 Backspace BS Rückwärtsschritt" << std::endl;
std::cout << "09 HT Horizontal Tabulation" << std::endl;
std::cout << "10 Line Feed LF Zeilenvorschub" << std::endl;
std::cout << "11 Vertical Tabulation VT" << std::endl;
std::cout << "12 Form Feed FF Formularvorschub, Schirm löschen" << std::endl;
std::cout << "13 Carrige Return CR Wagenrücklauf" << std::endl;
std::cout << "14 Shift out SO Umschalten aus" << std::endl;
std::cout << "15 Shift in SI Umschalten ein" << std::endl;
std::cout << "16 Data Link Escape DLE Austritt aus der Datenverbindung" << std::endl;
std::cout << "17 Device Control 1 DC1 Gerätesteuerung 1" << std::endl;
std::cout << "18 Device Control 2 DC2 Gerätesteuerung 2" << std::endl;
std::cout << "19 Device Control 3 DC3 Gerätesteuerung 3" << std::endl;
std::cout << "20 Device Control 4 DC4 Gerätesteuerung 4" << std::endl;
std::cout << "21 Negative Acknowledge NAK Fehlermeldung" << std::endl;
std::cout << "22 Synchronous Idle SYN Synchronisierung" << std::endl;
std::cout << "23 End of Transm.Block ETB Datenblockende" << std::endl;
std::cout << "24 Cancel CAN ungültig" << std::endl;
std::cout << "25 End of Medium EM Datenträgerende" << std::endl;
std::cout << "26 Substitute SUB Character Zeichen ersetzen" << std::endl;
std::cout << "27 Escape ESC Rücksprung" << std::endl;
std::cout << "28 File Separator FS Filetrennung" << std::endl;
std::cout << "29 Group Separator GS Gruppentrennung" << std::endl;
std::cout << "30 Record Separator RS Untergruppentrennung" << std::endl;
std::cout << "31 Unit Separator US Einheitentrennung" << std::endl;
std::cout << "32 Space SP Leerschritt" << std::endl;
}

nun main.cpp

#include "showfile.h"

int main(void)
{
  filestatis fstc;
  int wohin = 0;

do
switch(wohin)
 {
  default:
          fstc.getcurdir();
          wohin = fstc.hauptmenue();
          //std::cout << "\nIhre Wahl: " << wohin << std::endl;;
    break;

  case 1 : return 0;
        break;

 case 2: fstc.getdatname();
         fstc.LeseDateiein();
         wohin = 0;
       break;

 case 3:
     fstc.showstatistik();
     wohin = 0;
   break;

 case 4:
     fstc.ShowSteuerzeichen();
   wohin = 0;
   break;

 }while(wohin != 1);

return EXIT_SUCCESS;
}
/***********************Ende Hauptprogramm***************************************/

Das Problem mit UTF8 ist noch nicht ganz gelöst. wenn mir das Arbeitsamt nicht mehr mit
Bewerbungen im Nacken sitzt, vielleicht mehr.

Ansonsten viel Spaß beim testen
Guiseppe :D


pn
Gast 
28.02.2020, 15:22
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Kleines Tool um eine Datei als Statistik zu zeigen!" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Encrypt AES: Mein kleines Online-Tool
Ich habe auf http://www.aesencryption.de/ ein Tool zum Verschlüsseln von Daten zur Verfügung gestellt. Die Daten werden in 128 und 256 Bit verschlüsselt. Ich habe darauf geachtet die beiden gängigen Ausgabeformate einzuhalten (MySQL und OpenSSL). Falls...
[Allgemein]von mgutt
0
364
20.03.2013, 10:10
mgutt
Wie sperre ich eine Excel-Datei nur für eine bestimmte Firma?
Hallo Leute! Hier mal ein Problem bei dem ich nicht weiter komme. Aus bestimmten Gründen möchte ich meine Excel-Dateien, mit der man verschiedene Sachen berechnen kann, welche für die Qualitätssicherung sehr wichtig sind, für eine bestimmte...
[Allgemein]von Guiseppe
3
528
07.05.2017, 09:46
StefaniaM
was beinhaltet eine Dump-Datei
Hallo, ich möchte gern mal wissen was eine Dumpdatei von Wiki enhält bzw wozu benötige ich diesen bei der Installation von MediaWiki? Ich möchte nämlich gern das grundgrüst von Wiki nutzen um eine eigene Datenbank in der Firma zu...
von Wachsi08
2
172
07.07.2009, 18:33
Wachsi08
Eine PDF Datei geht, die andere nicht
Hi, ich habe eine PDF einbinden wollen; <center> <html> <head></head> <body> <p><iframe src="../**/**/**/*******************.pdf" style="border: 0px solid;"...
von Helado87
0
155
09.07.2012, 08:17
Helado87
Eine Datei mit zufälligem Inhalt generieren
Ich brauchte eine Funktion um mit PHP Dateien zu erstellen, die einen zufälligen Inhalt haben: function string_rand&#40;$len, $split="\n"&#41; &#123; return...
[PHP]von mgutt
0
561
07.09.2014, 12:06
mgutt
Datei automatische eine Vorlage hinzufügen
Hallo Leute, ich hoffe ihr könnt mir da weiter helfen. Falls es diese Art von Anfrage schon einmal gegeben hat so habe ich sie nicht gefunden, oder einfach falsch gesucht. Wäre toll wenn ihr mir dann den Link zu dem Thema mitteilen könnt. Also, ich...
von mahetpedia
1
69
09.10.2014, 19:54
kghbln
Gibt es eine Browser-Extension mit der ich mir die Änderung der .hosts Datei sparen kann?
Ich suche nach einer Extension für Chrome oder Firefox mit der ich die IP einer Domain ändern kann. D.h. genauso wie bei der .hosts Datei in Windows, nur eben einfacher. Kennt da jemand...
von mgutt
1
156
24.01.2015, 17:28
mgutt
Datei Hochladen - Datei beschädigt oder falsche Erweiterung
Wenn ich versuche eine Word-Datei (doc oder docx) hochzuladen erscheint folgende Fehlermeldung: "Die Datei ist beschädigt oder hat eine falsche Datei-Erweiterung. Bitte überprüfe die Datei und wiederhole den Hochlade-Vorgang." Der Dateityp...
von Zotzi
0
1.659
09.07.2010, 11:43
Zotzi
Statistik
Derzeitige Informationen für Interessierte: - 1.370,99 MB belegter Speicher auf unserem Server (40.000 MB insgesamt zur Verfügung) - 17.098,01 MB Traffic im Februar verbraucht (256.000 MB insgesamt frei Verfügung) - Anzahl der Beiträge: 26.964 -...
von mgutt
39
5.029
21.01.2011, 07:05
Milos von D.
Mitglieder-Statistik
Administratoren und Moderatoren können nun auf der Mitgliederliste ein Liniendiagramm über neue Mitgliederregistrierungen sehen. Das Diagramm wird live...
von mgutt
1
124
04.12.2008, 12:44
mgutt
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |