zeichen in einer datei suchen



  • wie kann ich ein zeichen in einer datei suchen, ohne die datei einzulesen?
    ich möchte ein bestimmtes zeichen in einer datei suchen und zaehlen wie oft es vorkommt!

    danke im voraus



  • Ganz ohne sie einzulesen wird das nichts, irgendwoher musst du ja Informationen her bekommen, was in der Datei steht. Im Notfall eben über ein externes Programm.

    MfG SideWinder



  • heißt das ich muss die ganze datei auf jeden fall einlesen?



  • Ja, mußt du - die CPU kann nicht direkt auf der Festplatte vergleichen (jedenfalls kenne ich keinen Rechner, der das kann).



  • dsorry, falls ich manchmal blöde fragen stelle!
    bin eben ein blutiger anfänger!
    Danke!!!!!!!!!!!!!!!!!!!!!



  • Hallo FreedomRunner,

    natürlich kannst du eine Datei Zeichen für Zeichen durchsuchen.
    Es besteht ja ein Unterschied zwischen "lesen" und "einlesen".

    Einlesen wäre es, wenn du die komplette Datei in einen
    Puffer einliest und diesen dann auf ein odere mehrere
    Zeichen durchsuchst.

    Lesen wäre es, wenn du immer nur ein einzelnes Zeichen
    einliest und dieses dann mit einem oder mehreren Zeichen
    vergleichst.

    Die Position in der Datei sowie sein Wert und
    auch die Häufigkeit des Zeichens kann dann
    in beiden Fällen in einem Index-Feld
    abgelegt und ausgegeben werden.

    Aber es muß auf jeden Fall die Datei mindestens 1x komplett
    durchgelesen werden. Nur halt nicht zwingend auch gespeichert.

    Gruß,
    DC



  • #include <cstdlib>
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
    int izeichen;
    int vzeichen='{';    
    int pos[100000];  
    int a=0;
    int b=0;
    char dat[30];
    FILE *file;
    
    printf("Bitte Dateinamen eingeben: ");
       scanf("%s",&dat);
    
       file = fopen(dat,"rb");
               if (file == NULL) 
                 { 
                    printf("File existiert nicht!!\n");
                    system("PAUSE");
                    return EXIT_SUCCESS;
                 }
    printf("Welches Zeichen soll ich suchen ? ");             
    scanf("%s",&vzeichen);             
    printf("%s\n",dat);             
    while ((izeichen = fgetc(file)) != EOF)
    {    
         if (izeichen == vzeichen) 
         {
          pos[a]=b; 
          a++;
         }
    b++;
    }
    for (int c=0;c<a;c++)
    {
    printf("Zeichen %c an Position %d\n",vzeichen,pos[c]);
    }
    printf("Zeichen wurde %d mal gefunden\n",a);
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Hab mal was zusammengezimmert.
    Das wäre eine Lösung.
    Es fehlen allerdings noch diverse Sicherheits-Checks falls
    zuviele Zeichen gefunden werden usw.
    Aber ist ja kein Problem das alles anzupassen.

    (Jaja, ich bin ein Fan von scanf() und printf())

    Gruß,
    DC


Anmelden zum Antworten