Wyszukiwanie znaków HTML w pliku tekstowym

0

Witam. Mam napisać program który wyszuka w pliku tekstowym podany przez użytkownika znacznik html. Pierwszą rzeczą jest sprawdzenie czy taki znacznik w ogóle istnieje, wszystkie poprawne umieściłem w pliku "baza.txt".

Zależy mi na tej pierwszej części programu (sprawdzenie poprawności), Próbowałem to jakoś napisać różnymi metodami, ale nie działało do końca -tzn. podając z klawiatury np "c" wypisywało że znacznik jest prawidłowy, bo "c" występuje np. w ""...

I tutaj właśnie mam problem, poradzono mi aby skorzystać z funkcji strcmp().
Czy mógłby mi ktoś poprawić ten kod? Co bym nie wpisał to dostaje komunikat że znacznik jest błędny.

Plik baza.txt : http://www66.zippyshare.com/v/13456598/file.html

 #include <string>
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    string a, wiersz;   
    char znacznik[30];
    char data[1000][1000]; 
    bool flaga;
    int znak =0;
    ifstream baza;    
    baza.open("baza.txt");

    
    if (baza.good()==true)
    {     
       if (!baza.eof())        
       {
       getline(baza, wiersz);
       a=wiersz;
                               
    for(int k=0; k<=1000; k++) //WAŻNE ! ROZMIAR PLIKU ZE ZNACZNIKAMI HTML (Ilosc linii)
       {
               baza.getline(data[k], 30);
       }
    
    cout << "Podaj znacznik: ";
    cin >> znacznik;

    for ( int i=0; i<1000; i++ )
    {
        if(strcmp(data[i], znacznik)==0)
        flaga=true;
        else flaga=false;
    }

} 
}
    if (flaga)
    
              cout << "OK - TUTAJ BEDA DALSZE INSTRUKCJE" << endl; // TU BEDZIE DALSZA CZESC PROGRAMU!
    else cout <<"WPROWADZONY ZNACZNIK JEST NIEPRAWIDLOWY!" << endl; // JAK JEST NIEPRAWIDLOWY TO ZAMKNIE
    system ("Pause");
    return 0;
}
0

Błędnie wczytujesz dane z pliku.

       getline(baza, wiersz);
       a=wiersz; //tutaj powinno być strncpy(a,wiersz);
 
    for(int k=0; k<=1000; k++) //WAŻNE ! ROZMIAR PLIKU ZE ZNACZNIKAMI HTML (Ilosc linii)
       {
               baza.getline(data[k], 30);
       }
 

Najpierw getline-m wczytujesz linijkę z pliku do zmiennej wiersz, a potem w pętli wczytujesz maksymalnie 30 000 znaków - jaki to ma mieć sens?

0

Wypadało by utworzyć tablice dynamiczną dla wprowadzanego przez urzytkownika tekstu oraz dla bazy ?
Mógłby ktoś poprawić to wczytywanie ?

0

Palnąłem glupote, nie wazne. Jezeli jest taka mozliwosc to niech ktos usunie ta odp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1