Hilfe bei einen Problem beim einlesen eines Verzeichnisses
-
//--------------------------------------------------------------------------- #include <iostream.h> #include <dir.h> //--------------------------------------------------------------------------- int main() { ffblk Datein; char Pfad1[256]; char Pfad[256]="C:\\Test\\"; char Dateityp[20]="*.txt"; char lauf[256]; char text[1000]; int b,c; int done; int zaehler=0; for (int i=0;i<1000;i++) text[i]=NULL; strcpy(Pfad1,Pfad); strcat(Pfad,Dateityp); done = findfirst(Pfad,&Datein,0); while (!done) { strcpy(lauf,Pfad1); strcat(lauf,Datein.ff_name); FILE *ream; ream = fopen(lauf, "r"); fseek(ream,0,SEEK_SET); fread (text,999,1,ream) ; fclose(ream); zaehler=0; for(int i=0; i<1000;i++) { b = text[i]; c = text [i-1]; if ( b >= 65 && b<=90 || b>= 58 && b<60 ||b>60 && b<= 93|| b>= 33 && b<=34|| b>= 36 && b<= 42|| b>= 95 && b<=96|| b>= 123 && b<126|| b==-114|| b==-103|| b==-102 || b == -77 || b == -78 || b == -75 || b == -128) { zaehler = zaehler +2; } else if( b >= 97 && b<=122 || b>=48 && b<=57|| b==32|| b==35|| b>= 43 && b<=46|| b== -31|| b== -124|| b==-108|| b==-127|| b == 9 || b == -28 || b == -4 || b == -10) { zaehler++; } } cout << Datein.ff_name << "\t\t" << zaehler<< endl; done = findnext(&Datein); } getchar(); return 0; } //---------------------------------------------------------------------------Problem: Wenn in den verzeichnis C:/Test/ mehrere Textdateien sind dann bekomme ich ein problem beim auslesen der Textlänge, des textes in den *.txt.
und zwar wenn eine datei mehr zeichen enthält als die andere dann zeigt er mir bei jeder Datei an das sie die gleiche länge hat, sprich zeigt bei allen die größe der größten datei an
Wäre über eine schnelle hilfe dankbar
-
Erstmal: Was sollen die Bedingungen in den if()-Blöcken denn darstellen? Bzw, was genau zählt die Funktion?
Zweitens: Sind die Dateien, die du untersuchst, überhaupt so groß?
Drittens: Schonmal etwas von fstreams's und string's gehört?
-
void verzeichnis() { ffblk Datein; char Pfad1[256]; char Pfad[256]="C:\\Test\\"; char Dateityp[20]="*.txt"; char lauf[256]; char text[1000]; int b,c; int done; int zaehler=0; for (int i=0;i<1000;i++) text[i]=NULL; strcpy(Pfad1,Pfad); strcat(Pfad,Dateityp); done = findfirst(Pfad,&Datein,0); while (!done) { for (int i=0;i<1000;i++) text[i]=NULL; strcpy(lauf,Pfad1); strcat(lauf,Datein.ff_name); FILE *ream; ream = fopen(lauf, "r"); fseek(ream,0,SEEK_SET); fread (text,999,1,ream) ; fclose(ream); zaehler=0; for(int i=0; i<1000;i++) { b = text[i]; c = text [i-1]; if ( b >= 65 && b<=90 || b>= 58 && b<60 ||b>60 && b<= 93|| b>= 33 && b<=34|| b>= 36 && b<= 42|| b>= 95 && b<=96|| b>= 123 && b<126|| b==-114|| b==-103|| b==-102 || b == -77 || b == -78 || b == -75 || b == -128) { zaehler = zaehler +2; } else if( b >= 97 && b<=122 || b>=48 && b<=57|| b==32|| b==35|| b>= 43 && b<=46|| b== -31|| b== -124|| b==-108|| b==-127|| b == 9 || b == -28 || b == -4 || b == -10) { zaehler++; } } cout << Datein.ff_name << "\t\t" << zaehler<< endl; done = findnext(&Datein); } getchar(); }so es funktioniert alles
zu erstmal: die funktion soll die tastenanschläge/sonderzeichen usw. zählen sprich großbuchstabe 2anschläge usw..
zweitens: ja die sin so groß manche so gar größer
-
sry for doppelpost
die bedienungen sind dazu da das er zählt. wir machen das mit den ascii code´s ist zwar umständlich aba so funktioniert es.
-
Dann solltest du mal versuchen, den Fehler einzuschränken - stehen jeweils die richtigen Werte in deinem Array? Stimmen die Bedingungen wirklich (btw, wenn du mit char's arbeitest, sieht 'A' übersichtlicher aus als 65)?
(ein Debugger kann sehr hilfreich sein dabei)
-
Fehler habe ich keine mehr beim einlesen der Textdatein in einen Verzeichnis.
ja würde übersichtlicher ausschauen aber als schüler ist man ja faul^^. und da das bis donnerstag fertig sein muss ändere ich das auch nicht mehr.
Bin gerade dabei das man das verzeichnis manuell eingeben kann. was ja nicht allzu schwer ist.das ganze gehört zu einen prog das für "schulen" gemacht werden soll die 10minuten abschriften in textverarbeitung machen. Das prog soll da dann für jeden schüler die anschläge zählen 1) eine datei wo man eingeben kann 2) ein verzeichen
und 3) das wo ich nicht schaffen werde RTF einzulesen. da ich da nicht weiter komme da word und wordpad verschiedene formatierungen mit abspeichern in der datei.- das ganze soll abgespeichert werden können
p.S.: falls einer nen tipp für rtf hätte höre ich mir ihn gerne mal an
-
Ne Dokumentation zu RTF findest du hier.