Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z projektem C++

Ostatnio zmodyfikowano 2009-11-28 00:59
Autor Wiadomość
Weteran
Temat założony przez niniejszego użytkownika
Problem z projektem C++
» 2009-11-27 18:23:03
Witam wszystkich!, jestem nowy na tym forum. Chciałem prosić o pomoc w projekcie:

C/C++
#include "iostream"
#include "fstream"
#include "stdio.h"
#include "string"


using namespace std;

int main()
{
    int i, j, z, licznikZ, prawda, zgodne;
    fstream plik1, plik2;
    char Indeks;
    string strZnacznik, strZamkniecie1, strZamkniecie2, strTab[ 100 ], strTabZam[ 100 ];
    string strZnak1, strtabZ[ 95 ], strZnakzam, strZnak2;
   
    plik2.open( "D:\\moje\\Uczelnia\\Projekt\\Znaczniki.txt" );
    j = 0;
    getline( plik2, strtabZ[ j ] );
   
    while( !plik2.eof() )
    {
        j++;
        getline( plik2, strtabZ[ j ] );
    }
    plik2.close();
   
   
    plik1.open( "D:\\moje\\Uczelnia\\Projekt\\Cytaty.html" );
    plik1 >> Indeks;
   
    i = 0;
   
    while( !plik1.eof() )
    {
        if( Indeks == '<' )
        {
            plik1 >> Indeks;
            if( Indeks != '/' )
            {
                strZnacznik = Indeks;
                prawda = 0;
                do
                {
                    plik1 >> Indeks;
                    strZnak1 = Indeks;
                    strZnacznik = strZnacznik + strZnak1;
                   
                    for( j = 0; j < 95; j++ )
                    if( strtabZ[ j ] == strZnacznik )
                    {
                        prawda++;
                    }
                }
                while( prawda < 1 );
               
                strTab[ i ] = strZnacznik;
                cout << strTab[ i ] << endl;
               
                i++;
            }
        }
        plik1 >> Indeks;
    }
    plik1.close();
   
    for( z = 0; strTab[ z ] != ""; i++ )
         strTabZam[ z ] = "</" + strTab[ z ] + ">"; //do tego momentu działa poprawnie
   
   
    plik1.open( "D:\\moje\\Uczelnia\\Projekt\\Cytaty.html" ); //od tego momentu już nie
   
    plik1 >> Indeks; //mimo nowego otwarcia pliku zczytuje taki znak: ">" , a   powinien byc taki: "<" bo taki jest pierwszy znak w pliku html
    //i niestety nie wiem jak temu zaradzić
   
    while( !plik1.eof() )
    {
        if( Indeks == '<' )
        {
            do
            {
                plik1 >> Indeks;
                if( Indeks == '/' )
                {
                    strZamkniecie1 = "</";
                    zgodne = 0;
                    i = 0;
                    do
                    {
                        plik1 >> Indeks;
                        strZnak2 = Indeks;
                        strZamkniecie1 = strZamkniecie1 + strZnak2;
                       
                        for( i = 0; strTabZam[ i ] != ""; i++ )
                        if( strZamkniecie1 == strTabZam[ i ] )
                        {
                            cout << strZamkniecie1 << endl;
                            zgodne++;
                        }
                    }
                    while( zgodne < 1 );
                   
                }
            }
            while( zgodne < 1 );
           
        }
        plik1 >> Indeks;
    }
    plik1.close();
   
    getchar();
    return 0;
}


Program ten ma wyszukiwać wszystkie znaczniki html w zadanym pliku (pierwsze otwarcie pliku - działa poprawnie), a potem do tych wyszukanych znaczników ma znaleźć ich zamknięcia, o ile istnieją w pliku (drugie otwarcie pliku - to właśnie nie chce mi działać). Nie wiem dlaczego w momencie drugiego otwierania pliku nie chce to działać. Wydaje mi się, że chodzi tu o wewnętrzny wskaźnik pliku, który po wcześniejszym otwarciu pliku nadal jest na jego końcu, ale nie wiem jak go ustawić na początku... Z góry dzięki za pomoc. Pozdrawiam
P-11819
DejaVu
» 2009-11-27 19:54:43
C/C++
plik1.clear(); //to trzeba dopisać
plik1.open(...)
P-11821
Weteran
Temat założony przez niniejszego użytkownika
» 2009-11-28 00:59:49
Wielkie dzięki za pomoc:) teraz wszystko już działa.
P-11832
« 1 »
  Strona 1 z 1