pr1, Dokumentacja


/*

Opis:

Program ma za zadanie wyciagnac znaczniki IMG z podanego jako pierwszy paramter pliku html.

Jezeli zostanie podany drugi parametr, to program zapisze dane do plik out.txt, nie

wyswietlajac zadnych informacji na ekranie.

Opis działania:

1 - odczyt pliku html z usunieciem znakow entera

2 - wyciagniecie pelnego znacznika IMG html

3 - wyciagniecie nazwy obrazka oraz opisu alt

4 - wyswietlenie lub zapis do pliku

Wywolanie:

- wyswietlenie na ekran

zad3.exe test.html

- zapis do pliku

zad3.exe test.html out

*/

Source code:

#include <stdio.h>

#include <stdlib.h>

#include <io.h>

#include <string>

#include <vcl.h>

#include <fstream>

#include <iostream>

#include <dir.h>

using namespace std; /* dyrektywa użycia standardowej przestrzeni nazw */

#pragma hdrstop

#pragma argsused

// definicje opisu bledow

#define error1 0 /* brak parametrow*/

#define error2 1 /* za duzo parametrow */

#define error3 2 /* brak pliku pierwszego parametru */

#define error4 4 /* podany plik wejsciowy nie czyta sie */

#define error5 5 /* podany plik wyjsciowy nie zapisuje sie */

/*

procedury zdefiniowane przez uzytkownika

*/

void show_error_messeage( int err_code ); // wystwietla bledy na stdout

void czytaj_plik ( char * file_name ); // czyta dane z pliku

void szukaj_znacznikow( string plik); // szuka pelnego nnacznika html

void zapisz_do_pliku(string obrazek, string opis);// zapisuje poszczegolne linie do pliku

string szukaj_alt_obrazka( string znacznik); // wyciaga z podanej lini opis alt obrazka

string szukaj_obrazka( string znacznik); // wyciaga z podanej lini nazwe obrazka

int plik_istnije( char * file_name ); // sprawdza czy plik istnieje na dysku

bool czy_zapisac_do_pliku; // jezeli true - zapis do pliku, 2 par / false - brak zapisu, 1 par

int main(int argc, char* argv[])

{

system("cls"); // czysci ekran

int ile_par = argc - 1 ; // ile parametrow przy uruchomieniu

if ( ile_par == 1)

// wyswietla dane na ekranie

{

if (! plik_istnije(argv[1]))

{

show_error_messeage(2);

}

else

{

czy_zapisac_do_pliku = false;

czytaj_plik(argv[1]);

}

}

else if (ile_par == 2)

// zapisuje dane do pliku

{

if (! plik_istnije(argv[1]))

{

show_error_messeage(2);

}

else

{

czy_zapisac_do_pliku = true;

czytaj_plik(argv[1]);

}

}

else if ( ile_par == 0 )

{

show_error_messeage(error1);

}

else

{

show_error_messeage(error2);

}

puts("");

system("PAUSE");

return EXIT_SUCCESS;

}

void show_error_messeage( int err_code )

{

switch( err_code )

{

case error1 : puts("");

puts( "Brak parametrow wywolania programu!" );

puts( "Prawidlowo: nazwa_pliku_html znacznik_otwierajacy " );

break;

case error2 : puts("");

puts( "Za duzo parametrow wywolania programu!" );

puts( "Prawidlowo: nazwa_pliku_html znacznik_otwierajacy " );

break;

case error3 : puts("");

puts( "Brak pliku podanego jako pierwszy parametr!");

puts( "Prawidlowo: nazwa_pliku_html znacznik_otwierajacy " );

break;

case error4 : puts("");

puts( "Podany plik nie da sie otworzyc do odczytu!");

break;

default : puts("");

puts( "Wystapil nieznany blad." );

break;

}

}

int plik_istnije( char * file_name )

// sprawdza czy istnieje plik na hdd

{

return ( access( file_name, 0 ) == 0 );

}

void zapisz_do_pliku(string obrazek, string opis)

// zapisuje jedna linie w pliku

{

string tmp;

tmp = obrazek + opis;

FILE *file_out;

if ((file_out = fopen("out.txt", "at")) == NULL)

{

show_error_messeage(5);

}

else

{

int x = (tmp.length());

cout << tmp;

for (int y = 0; y <= x-1 ; y++)

{

fputc(tmp[y], file_out);

}

}

fclose(file_out);

}

void czytaj_plik ( char * file_name )

// czyta plik i zapisuje go do jednej lini z pominieciem entera,

// dane sa w jednej lini

{

char znak;

string plik_html;

FILE *file_in;

if ((file_in = fopen(file_name, "rt")) == NULL)

{

show_error_messeage(4);

}

else

{

while (!feof(file_in))

{

znak = fgetc(file_in);

if (znak == '\n')

{

znak = NULL;

}

plik_html = plik_html + znak;

}

plik_html = plik_html;

szukaj_znacznikow( plik_html);

}

fclose(file_in);

}

string szukaj_obrazka( string znacznik)

// z przekazanej lini wyciaga dane dotyczace nazwy obrazka

{

string obrazek;

string tmp;

znacznik.erase(1,3+znacznik.find("SRC=\""));

obrazek = znacznik.substr(2,(znacznik.find("\"",2))-2);

tmp = "O: ";

tmp = tmp + obrazek;

tmp = tmp + "\n";

return tmp;

}

string szukaj_alt_obrazka( string znacznik )

// z przekazanej lini wyciaga dane dotyczace alternatywnej nazwy obrazka

// jezeli jej brak to zapisuje --- brak alt ---

{

string opis;

string tmp;

znacznik.erase(1,3+znacznik.find("ALT=\""));

opis = znacznik.substr(2,(znacznik.find("\"",2))-2);

if (!(opis.length() > 0) )

{

opis = "--- brak alt ---";

}

tmp = "A: ";

tmp = tmp + opis;

tmp = tmp + "\n";

return tmp;

}

void szukaj_znacznikow( string plik )

// szuka znacznik img

// tworzy jedna linie zawierajaca caly jeden znacznik img z html

{

string znacznik;

while (plik.length() > 0)

{

int pozycja_pocz_img = plik.find("IMG");

int pozycja_kon_img = 0;

if (pozycja_pocz_img > 0)

{

plik.erase(1, pozycja_pocz_img -1);

pozycja_kon_img = plik.find("\">")+2;

znacznik = plik.substr(0, pozycja_kon_img);

plik.erase(1, pozycja_kon_img);

if (!czy_zapisac_do_pliku) {

cout << szukaj_obrazka(znacznik);

cout << szukaj_alt_obrazka(znacznik);

}

else

{

zapisz_do_pliku(szukaj_obrazka(znacznik), szukaj_alt_obrazka(znacznik));

}

}

else

{

plik.erase(0, plik.length());

}

}

}

Zadanie: Zad3 - wyciagnąć znaczniki IMG i ALT z html

Program na zaliczenie Laboratorium

PODSTAWY I JĘZYKI PROGRAMOWANIA

Grupa: 3BZ / WSTI

Student: Robert Ruszel (112)

Strona 1 z 5



Wyszukiwarka

Podobne podstrony:
DOKUMENTACJA OBROTU MAGAZYNOWEGO prawidł
Proces pielęgnowania Dokumentacja procesu
dokumentacja 2
Wykład 3 Dokumentacja projektowa i STWiOR
20 Rysunkowa dokumentacja techniczna
dokumentacja medyczna i prawny obowiązek jej prowadzenia
W 5 dokumentacja ZSJ
Dokumentacja pracy na kąpielisku
Dokumenty aplikacyjne CV list
Dokumentacja pracy fizjoterapeuty
Dokumentacja medyczna bloku operacyjnego
W 5 Dokumentacja operacji gospodarczych ZAZ
DOKUMENTOWANIE GEOTECHNICZNE kurs
3)kontrola dokumentˇw
Opracowanie dokumentacji powypadkowej BHP w firmie
dokument ubiegajacy sie o kredyt inwestycyjny w banku
Dokument
09 Posługiwanie się dokumentacją techniczną (2)

więcej podobnych podstron