Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char array durchsuchen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.12.2006, 00:43 Uhr
~pete
Gast


hi!
ich lese in meinem programm die daten aus einem txt file in ein char array ein und möchte dieses dann nach einem begriff durchsuchen. Einlesen und speichern funktionniert, nur mit meiner suchfunktion scheint was nicht zu stimmen ... durchsuch den code schon ständig nach bugs, find aber den feheler nicht .. vielleicht hätt ja jemand von euch die güte mal einen blick drauf zu werfen:

globale variablen:
char textfeld[17000][1000]; (ja ich weiss ziemlich gross) <== hier wird das txt file reingespeichert ...

int wieviel; <== soll zaehlen wie oft der suchbegriff gefunden wurde ...

und hier die funktion:

C++:
void compare(char x[100], int i, int j, int k){  
    
//     cout << i << " " << j << " " << k << endl;
          
     if(x[i]==textfeld[j][k]){
       if(x[i+1]=='\0'){              
         wieviel++;
         cout << "found in line " << j << endl;
         cin.get();              
         if(j+1<17000){              
           compare(x,0,j+1,0);
         }
         else{
           cout << endl << endl << "Search complete!" << endl << endl << endl;
         }  
       }
       else {  
         if(textfeld[j][k+1]!='\0'){
           compare(x,i+1,j,k+1);
         }
         else{
           cout << "not found in line " << j << endl;
           if(j+1<17000){
             compare(x,0,j+1,0);
           }
           else{
             cout << endl << endl << "Search complete!" << endl << endl << endl;                
           }                  
         }
       }
     }
     else{
       if(textfeld[j][k+1]!='\0'){                        
         compare(x,0,j,k+1);
       }
       else{
         if(j+1<17000){
           cout << "not found in line " << j << endl;  
           compare(x,0,j+1,0);
         }
         else{
           cout << endl << endl << "Search complete!" << endl << endl << endl;  
         }
       }
     }
}



char x wird das such array aus der main() zugewiesen, int i ist der index von x, und j und k die indizes für das textfeld[j][k] ... zu beginn alle drei auf 0 .. (such array, sowie das textfeld wurden zu beginn mit '\0' initialisiert (vor der einelese der txt file selbsverständlich ...
wär cool wenn mir wer weiterhelfen könnte ... die suche bricht nämlich ca bei line 1950 ab (obwohl es in dieser zeile kein sonderzeichen oder ähnliche problemmacher gibt ...)
lg, pete
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.12.2006, 09:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


da du ja c++ verwendest...

unter der annahme, das ein die gesuchten begriffe nicht über mehrere zeilen verteilt sind, braucht du eigenltich nur mit std::getlline immer in einen string einlesen und auf dem string die find methode aufrufen und das ganze "läuft von selbst"


C++:
#inlcude <iostream>
#inlcude <fstream>
#include <string>

std::string line;
std::ifstream ifs("text.txt");

while(std::getline(.....)){

//string mit find verarbeiten
}




--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.12.2006, 09:33 Uhr
~pete
Gast


danke, aber da es für die uni ist und wir die stringklasse nicht verwenden duerfen, kann ich das leider nicht so realisieren
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.12.2006, 09:49 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok wie dem auch sei...

du kannst mit fgets zeilenweise einlesen und dann mit strstr die zeile durchsuchen und hast dann auch kein string verwendet...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 12.12.2006 um 09:50 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: