HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 14.11.2009, 21:50
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

Помогите с кодом, нужно пробежаться с указанного начального каталога по его подкаталогам, удаляя из них файлы с расширениями *.@@@,*.bla, *.sdx.
 
Ответить с цитированием

  #2  
Старый 15.11.2009, 04:34
Linkus
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме:
436500

Репутация: 11
По умолчанию

Цитата:
Сообщение от draliokero  
Помогите с кодом, нужно пробежаться с указанного начального каталога по его подкаталогам, удаляя из них файлы с расширениями *.@@@,*.bla, *.sdx.
В коде куча лишнего хлама, ибо вырезано кое-как из совсем другого проекта удачи!

Код:
#include <stdio.h>
#include <windows.h>

HANDLE ch;

DWORD WriteToConsole(LPSTR text)
{
  DWORD nChars;
  char buf[MAX_PATH];
  strcpy(buf,text);
  strcat(buf,"\r\n");
  char buf2[MAX_PATH];
  CharToOem(buf,buf2);
  WriteConsole(ch,buf2,strlen(buf2),&nChars,0);

  return nChars;
}

void FindAndDelete(LPSTR path, LPSTR name )
{

	WIN32_FIND_DATA wfd;
        HANDLE fh;
        char lol[MAX_PATH];
        strcpy(lol,path);
        strcat(lol,"*");
        fh = FindFirstFile(lol,&wfd);

	if(fh == INVALID_HANDLE_VALUE) return;

        do
        {

           if (strstr(wfd.cFileName,name) != NULL)
          {

                  char delfilebuf[MAX_PATH];
                  strcpy(delfilebuf,path);
                  strcat(delfilebuf,wfd.cFileName);
                  WriteToConsole(delfilebuf);
                  //Удаляем файл
                  DeleteFile(delfilebuf);

            }

                        if ((!strcmp(wfd.cFileName,".")) || (!strcmp(wfd.cFileName,".."))) continue;

                           if (wfd.dwFileAttributes ==FILE_ATTRIBUTE_DIRECTORY)
                           {

                                                char pathbuf[MAX_PATH];
                                                strcpy(pathbuf,path);
                if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");
                                                strcat(pathbuf,wfd.cFileName);
                if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");


                FindAndDelete(pathbuf,name);

                           }


        } while (FindNextFile(fh,&wfd));

        FindClose(fh);

        return;

}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
        AllocConsole();
        ch = GetStdHandle(STD_OUTPUT_HANDLE);

        //Запускаем рекурсивную функцию
        //Её параметры: путь к стартовой папке и 
        // расширение удаляемых файлов (с точкой!)
        // удаляет файлы с заданным расширением в
        //стартовой папке,  её подпапках, и их подпапках, и их
        //подпапках))))) etc
        FindAndDelete("D:\\tst\\",".\@\@\@");
        FindAndDelete("D:\\tst\\",".bla");
        FindAndDelete("D:\\tst\\",".sdx");

        system("pause");



        return 0;
}
 
Ответить с цитированием

  #3  
Старый 15.11.2009, 01:58
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

Репутация: 88
Отправить сообщение для Irdis с помощью ICQ
По умолчанию

winflip
Возрадуйся...
опа, у меня ещё и пост простой 101
Код:
#include <cmath>
#include <iostream>
bool is_prime(int);
int main(){
	using namespace std;
	//int a,b;
	for(int i=1;i<=1000;i++){
		if(is_prime(i)){
			cout << i << " ";
		}
	}  
	system("PAUSE");  
}
bool is_prime(int m){
	using namespace std;
	int r = 1000;
	int t = m-1;
	int s = 0;
	//bool b = true;
	if((m==2)||(m==3)){
		return true;
	}
	if(m%2==0){
		return false;
	}
	if(m==1){
		return false;
	}
	while(t%2==0){
		s++;
		t=t/2;
	}
	for(int i=1;i<r+1;i++){
		int a = 2+rand()%(m-3);
		bool next = false;
		long x = a;
		for (int i1=0;i1<t-1;i1++)
			x = (x*a)%m;
		
		//int x = (long(pow(float(a),float(t))))%m;
		if((x==1)||(x==m-1)){
			continue;
		}
		for(int j=1;j<s;j++)
		{
			x=(x%m)*(x%m)%m;
			if(x==1){
				return false;
			}
			if(x==m-1){
				next = true;
				break;
			}
		}
		if (!next)
				return false;

	}
	return true;
}
 
Ответить с цитированием

  #4  
Старый 15.11.2009, 17:51
winflip
Познающий
Регистрация: 13.05.2009
Сообщений: 40
Провел на форуме:
91842

Репутация: 1
По умолчанию

Цитата:
Сообщение от Irdis  
winflip
Возрадуйся...
Возрадовался))) Спасибо))) Пол недели его не мог добить.
 
Ответить с цитированием

  #5  
Старый 15.11.2009, 07:53
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

Помогите разобраться, FindFirstFile(mask, &findFileData)
mask не передается с типами какойто косяк

Код:
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>

TCHAR * filemask[] = { ".---", ".@@@", ".$a", ".$db", ".$sa", ".___", "._dd",
    "._detmp", "._mp", ".aps", ".bac", ".bak", ".bbs", ".bup",
    ".cdr_", ".chk", ".cpy", ".da0", ".diz", ".dmp", ".err",
    ".fic", ".fnd", ".ftg", ".fts", ".gid", ".ilk", ".ion",
    ".lo_", ".mch", ".MS", ".nav", ".ncb", ".nhc", ".nu3",
    ".nu4", ".old", ".pch", ".prv", ".sdi", ".sfap0", ".sfk",
    ".shd", ".sik", ".spc", ".sud", ".swr", ".syd", ".tds",
    ".temp", ".tmp", ".wbk", ".wc", ".wlg", ".wpx", ".xlg",
".xlk" };


int SearchFiles(TCHAR *buffer, TCHAR *mask)
{
        HANDLE hFile;
        WIN32_FIND_DATA findFileData;
        TCHAR temp[MAX_PATH];
        
        SetCurrentDirectory(buffer);
        
        if((hFile=FindFirstFile(mask, &findFileData))==INVALID_HANDLE_VALUE)
        {
                printf("Invalid file handle (%d)\n", GetLastError());
                return -2;
        }
        else 
        {       
                do
                {
                        if(!strcmp(findFileData.cFileName, TEXT("."))||!strcmp(findFileData.cFileName, TEXT("..")))     
                        {
                                continue;
                        }
                        
                        if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
                        {                               
                                strcpy(temp, buffer);
                                strcat(buffer, "\\");
                                strcat(buffer, findFileData.cFileName);
                                
                                SearchFiles(buffer);
                                strcpy(buffer,temp);
                                continue;
                        }
                        printf("File name is %s\n", findFileData.cFileName);
                }
                while(FindNextFile(hFile, &findFileData)!=0);
        }
        FindClose(hFile);
        return true;
}
 
int main(int argc, TCHAR* argv[])
{
        
        TCHAR buffer[MAX_PATH];
        GetCurrentDirectory(sizeof(buffer), buffer);
    int arrsize = sizeof(filemask)/sizeof(int);
    
    for(int i=0; i<arrsize; i++){
       SearchFiles(buffer, filemask[i]);
    }
    system("pause");
    return 0;
}

Последний раз редактировалось draliokero; 15.11.2009 в 14:30..
 
Ответить с цитированием

  #6  
Старый 15.11.2009, 17:34
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

как в чистом С++ конвертировать текст в utf-8?

(и накрайняк как это сделать с бустом)
 
Ответить с цитированием

  #7  
Старый 15.11.2009, 18:01
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

Дикс
http://www.cplusplus.com/reference/clibrary/cstdlib/wcstombs/ это?
 
Ответить с цитированием

  #8  
Старый 15.11.2009, 18:10
draliokero
Познающий
Регистрация: 14.03.2009
Сообщений: 86
Провел на форуме:
385811

Репутация: 12
По умолчанию

Ra$cal, дружище, если не сложно, помоги пожалуйста разобраться, в чем моя ошибка в коде на предыдущей странице :-)
 
Ответить с цитированием

  #9  
Старый 16.11.2009, 00:09
Linkus
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме:
436500

Репутация: 11
По умолчанию

Цитата:
Сообщение от draliokero  
Ra$cal, дружище, если не сложно, помоги пожалуйста разобраться, в чем моя ошибка в коде на предыдущей странице :-)
здесь недостаточно параметров:
Код:
int SearchFiles(TCHAR *buffer, TCHAR *mask)
....
if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
                        {
                                strcpy(temp, buffer);
                                strcat(buffer, "\\");
                                strcat(buffer, findFileData.cFileName);

                                SearchFiles(buffer);
.........
как я понял, тебе нужен рекурсивный поиск файлов по маске? можно как в коде что я приводил: ищется файл "*", если это директория - в ней запускается рекурсивный поиск, иначе в имени ищется подстрока типа ".bla" в общем с расширением. Короче разбирайся!

upd
а если как у тебя - то надо бы к элементам маски звёздочки добавить....
Код:
"
.....
"*.fnd", "*.ftg", "*.fts", "*.gid",
.....
но в подпапках поиска не будет...

Последний раз редактировалось Linkus; 16.11.2009 в 00:26..
 
Ответить с цитированием

  #10  
Старый 15.11.2009, 20:01
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Цитата:
Дикс
http://www.cplusplus.com/reference/clibrary/cstdlib/wcstombs/ это?
Цитата:
char dest[SIZE];
wchar_t *dptr = L"string";
size_t count = SIZE;
size_t length;

length = wcstombs(dest, dptr, count);
из примера следует что на входе

wchar_t *dptr = L"string";

а у меня

string test = "test"
либо вообще такое:

#define TEXT "text"
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ