Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [c++] Выделить теги отвечающие за картинки 
:(
    Опции темы
katz
Дата 16.1.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



В HTML документе выделить теги отвечающие за картинки и поместить картинки в отдельную папку. Заранее Спасибо!!!
PM MAIL   Вверх
kot_matros
Дата 16.1.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 11.1.2007

Репутация: нет
Всего: нет



From BCC32
Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dir.h>

#include <windows.h>


WIN32_FIND_DATA ffd; //FindFileData
char *fexist( const char *Fname );


struct cell {

  char htmteg[500];
  struct cell *po;
    };


void main( int argc, char *argv[] )
{
int i, j, c, q, p, ch, fs;
char fname_in[MAXPATH], buf[500], old_dir[MAXDIR], new_dir[MAXDIR], drive[MAXDRIVE],
dir[MAXDIR], file[MAXFILE], ext[MAXEXT], grabdir[MAXDIR], grabfile[MAXPATH];

FILE *f;
if( argc >1 )
    strcpy( fname_in, argv[1] ); // именем файла будет первый аргумент командной строки
else
{
    printf( "No find file na m  e!\n" );
    exit(1);
    }

if( (f=(fopen( fname_in, "r" ))) ==NULL )
{
    perror( "Error reading: " );
    exit(1);
    } 

// ____________________________________________________

struct cell *rex;
struct cell *start=NULL; /* начало списка */
struct cell *end=NULL;   /* конец списка */


fseek( f, 0L, SEEK_SET );
for( fs=0; (ch=fgetc( f ))!=EOF; )
{

    if( ch =='<' && fs==0 )
    {
        for( fs=0, i=0; (ch=fgetc( f ))!='>'; i++ )
        {
            if(  ch==EOF )
            {
                fs=-1; 
                break; 
                }
            buf[i]=ch;
            }
        buf[i]='\0';

                          /* создание списка */
        if( (strstr( buf, "img" ) !=NULL) && (strstr( buf, "src" ) !=NULL) )
        {
            rex=( cell * ) malloc ( sizeof( cell ) );
            strcpy( rex->htmteg, buf );

            if( start==NULL && end==NULL )  start=rex;
            else  end->po=rex;
            end=rex;
            end->po=NULL;
            }
        }
    if( fs==-1 ) break;  
    }

                         /* изменение списка */
rex=start;
while( rex!=NULL )
{
    memset( buf, NULL, strlen(buf)*sizeof( char * ) );

    for( i=0; (unsigned)i <strlen(rex->htmteg); i++ )
    {
        if( rex->htmteg[i] =='i' && rex->htmteg[i+1] =='m' && rex->htmteg[i+2] =='g' )
        {
             for( j=i, fs=0; ; j++ )
             {
                 if( (unsigned)j ==strlen(rex->htmteg) )
                 {
                     fs=-1;
                     break;
                     }
                 else if( rex->htmteg[j] =='s' && rex->htmteg[j+1] =='r' && rex->htmteg[j+2] =='c' )
                 {

                     for( c=j, fs=0; ; c++ )
                     {
                         if( (unsigned)c ==strlen(rex->htmteg) )
                         {
                             fs=-1;
                             break;
                             }

                         else if( rex->htmteg[c] =='\"' && rex->htmteg[c+1] !='\"' )
                         {

                             for( p=0,q=c+1, fs=0; ; q++, p++ )
                             {
                                 if( ((unsigned)q ==strlen(rex->htmteg)) || (rex->htmteg[q] =='\"' && rex->htmteg[q+1] !='\"') )
                                 {
                                     fs=-1;
                                     break;
                                     }
                                 buf[p] =rex->htmteg[q]; 
                                 }
                             buf[p]='\0';
                             }
                         if( fs==-1 ) break;
                         }
                     }
                 if( fs==-1 ) break;
                 }

            if( fs==-1 ) break;
            }
        } 


    if( buf ) strcpy( rex->htmteg, buf );
    rex=rex->po;
    }
/* имееем список с именами  файлов */
// ____________________________________________________


fnsplit( fname_in, drive, dir, file, ext ); //разберем на запчасти путь к файлу
if( strlen(drive)==0 && strlen(dir)==0 ) strcpy( dir, ".\\" );
fnmerge( new_dir, drive, dir, NULL, NULL );

GetCurrentDirectory( sizeof(old_dir), old_dir ); // текущий рабочий каталог
SetCurrentDirectory( new_dir );
GetCurrentDirectory( sizeof(new_dir), new_dir );

strcpy( grabdir, old_dir );
strcat( grabdir, "\\grab" );

if( !fexist( grabdir ) )
{
    if( CreateDirectory( grabdir, NULL ) )
        printf( "Directory create by %s\n", grabdir );
    else
    {  
        printf( "error creating directory\n" );
        exit(1);
        }
    }

rex=start;
while( rex!=NULL )
{

    if( !fexist( rex->htmteg ) ) printf( "No File %s\n", rex->htmteg );
    else
    {
        fnsplit( rex->htmteg, drive, dir, file, ext );
        fnmerge( buf, NULL, NULL, file, ext );
        strcpy( grabfile, grabdir );
        strcat( grabfile, "\\" );
        strcat( grabfile, buf );
        CopyFile( rex->htmteg, grabfile, NULL );
        }
    rex=rex->po;
    }

return;
}


/*
********************************************************
*/
char *fexist( const char *Fname )
{
HANDLE handle;

handle = FindFirstFile( Fname, &ffd );
if( handle != INVALID_HANDLE_VALUE )

   FindClose( handle );
   return  ffd.cFileName;
   }

FindClose( handle );
return NULL;
}


Это сообщение отредактировал(а) kot_matros - 17.1.2007, 11:02
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.