Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 54

Антивирус

03.06.2018, 11:03. Показов 3155. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, нужна помощь. Код полностью рабочий, ошибок не выдает, но консольное окно пропадает сразу после запуска. Что с этим сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include "stdafx.h"
#include "dos.h"
#include "windows.h"
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>
#include "stdio.h"
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <direct.h>
#include "io.h"
#define F_FOUND 0
#define PATH_LEN 128
#define DRIVE_LEN 4
#define BLANK_LEN 80
#define BAD 1
#define GOOD 0
#define DBG
int a = -1740;
/* Сигнатура */
char sign[7] = { (char)0xB4,
(char)0x83,
(char)0xCD,
(char)0x21,
(char)0x5E,
(char)0x56,
'\0' };
char
/* Строка імені поточного підкаталога */
path[PATH_LEN],
/* Строка імені початкового знаходження */
old_path[PATH_LEN],
/* Строка імені необхідного пристроя */
drive[DRIVE_LEN],
/* Пуста строка */
blank[BLANK_LEN];
int
/* Кількість відсканованих каталогів */
n_dir,
/* Кількість досліджених файлів */
n_fil,
/* Кількість хворих і вилікуваних файлів */
n_ill;
int
/* Довжина імені файлу */
l,
/* Тимчасовий індекс */
i;
/* Рекурсивна процедура обходу дерева каталогу */
int infected(char *fn)
{
    int f = 0;
    int r, q = 0;
    char buf[7]; /* Буфер під сигнатуру */
                 /* Відкриваємо файл */
    r = _open(fn, O_RDONLY, f);
    if (r) { printf(" – ошибка открытия!"); return GOOD; }
    /* Читаємо 6 байт */
    _lseek(f, a, SEEK_END);
    r = _read(f, buf, 6); buf[6] = '\0';
    if ((r) || (q != 6)) {
        printf(" – ошибка чтения!"); _close(f); return GOOD;
    }
    /* Закриваємо файл */
    _close(f);
    /* Порівнюємо байти з сигнатурою */
    if (strcmp(buf, sign) == 0)
    {
        printf(" – был болен и..."); n_ill++; return BAD;
    } /* Заражений !!! */
    system("pause");
    return GOOD;
}
int cure(char *fn)
{
    int f = 0;
    int mz;
    int r, q = 0;
    char buf[24]; /* Буфер під байти */
                  /* Відкриваємо файл */
    r = _open(fn, O_RDWR, f);
    if (r) { printf(" – ошибка открытия!"); return 0; }
    /* Читаємо перші два байти для визначення типа програми */
    r = _read(f, &mz, 2);
    if ((r) || (q != 2)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Читаємо збережені вірусом 24 байти старого початку */
    int a1 = -80;
    _lseek(f, a1, SEEK_END);
    r = _read(f, buf, 24);
    if ((r) || (q != 24)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Визначаємо тип програми */
    if ((mz == 0x4D5A) || (mz == 0x5A4D))
    { /* Это exe */
      /* Пишемо правильні PartPag и PageCnt */
        _lseek(f, 2, SEEK_SET);
        r = _write(f, &buf[2], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloSS и ExeSP */
        _lseek(f, 14, SEEK_SET);
        r = _write(f, &buf[14], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloCS и ExeIP */
        _lseek(f, 20, SEEK_SET);
        r = _write(f, &buf[20], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    else
    { /* Это com */
      /* Відновлюємо збережені 3 байти програми */
        _lseek(f, 0, SEEK_SET);
        r = _write(f, &buf[0], 3);
        if ((r) || (q != 3)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    /* Усікаємо файл (переходимо на початок
    вірусу і записуємо 0 байт) */
    _lseek(f, a, SEEK_END);
    r = _write(f, buf, 0);
    /* Закриваємо файл */
    _close(f);
    printf("теперь исцелен!\n");
    system("pause");
    return 0;
}
int walk()
{
    int found_d, found_f;
    _finddata64i32_t buf;
    /* Пошук каталогів */
    found_d = _findfirst(".", &buf);
 
    while (found_d == F_FOUND)
    {
        if ((buf.name[0] != '.') && (buf.attrib & _A_SUBDIR))
        {
            _chdir(buf.name);
            walk();
            _chdir("..");
        }
        found_d = _findnext(found_d, &buf);
    }
    /* До цього моменту не відсканованих нижележачих каталогів
    Більше не залишилося – скануємо файли */
    n_dir++;
    _getcwd(path, PATH_LEN);
    /* Пошук файлів */
    found_f = _findfirst(".", &buf);
    while (found_f == F_FOUND)
    {
        l = strlen(buf.name);
        if (((buf.name[l - 3] == 'C') &&
            (buf.name[l - 2] == 'O') &&
            (buf.name[l - 1] == 'M')) ||
            ((buf.name[l - 3] == 'E') &&
            (buf.name[l - 2] == 'X') &&
                (buf.name[l - 1] == 'E')))
        {
            n_fil++;
            printf("%c%s", 13, blank);
            printf("%c%s\\%s ", 13, path, buf.name);
            /* Знайшли новий файл – необхідно перевірити, інфікований він чи ні.
            Якщо інфікований, то лікуємо */
            if (infected(buf.name) == BAD) cure(buf.name);
        }
        found_f = _findnext(found_f, &buf);
    }
    system("pause");
    return 0;
}
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
    if (argc < 2)
    {
        puts("Введите имя диска в качестве параметра"); exit(2);
    }
    if (((toupper(argv[1][0]))>'Z') || ((toupper(argv[1][0]))<'A'))
    {
        puts("Неверно задано имя диска”"); exit(3);
    }
    drive[0] = argv[1][0]; drive[1] = ':'; drive[3] = '\0';
    n_dir = 0;
    n_fil = 0;
    _getcwd(old_path, PATH_LEN);
    drive[2] = '\0'; system(drive);
    drive[2] = '\\'; _chdir(drive);
    /* Запускаємо рекурсивний обхід дерева каталогів
    Для вибраного диску */
    walk();
    old_path[2] = '0'; system(old_path);
    old_path[2] = '\\'; _chdir(old_path);
    printf("\nКаталогов : %d\nФайлов : %d\nОбнаружено больных и излечено : %d", n_dir, n_fil, n_ill);
    if (n_ill) exit(1); else exit(0);
    system("pause");
    return 0;
}
Буду очень благодарен за помощь.
Вот информация которая находится в выводе:
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\ntdll.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\kernel32.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\KernelBase.dll" . Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\apphelp.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\vcruntime140d.d ll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\ucrtbased.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\ucrtbased.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Выгружено "C:\Windows\System32\ucrtbased.dll"
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\kernel.appcore.dll" . Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\msvcrt.dll". Невозможно найти или открыть PDB-файл.
"ConsoleApplication8.exe" (Win32). Загружено "C:\Windows\System32\rpcrt4.dll". Невозможно найти или открыть PDB-файл.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2018, 11:03
Ответы с готовыми решениями:

Антивирус
Где можно бесплатно скачать рабочий антивирус Касперский?

Dev C++: ругается антивирус
Всем привет!У меня проблема во время компиляции.Когда я компилирую в Dev С++ Version 5.4.2 32 бита у меня ругается антивирусник, что мне...

Антивирус ругается на мои программы
#include &lt;iostream&gt; #define _USE_MATH_DEFINES #include &lt;cmath&gt; using namespace std; int main() { cout &lt;&lt; &quot;PI=&quot; &lt;&lt;...

44
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 54
04.06.2018, 15:04  [ТС]
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include "stdafx.h"
#include "dos.h"
#include "windows.h"
#include <fcntl.h>
#include <cstring>
#include <cerrno>
#include <sys\types.h>
#include <sys\stat.h>
#include "stdio.h"
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <cctype>
#include <direct.h>
#include "io.h"
#define F_FOUND 0
#define PATH_LEN 128
#define DRIVE_LEN 4
#define BLANK_LEN 80
#define BAD 1
#define GOOD 0
#define DBG
int a = -1740;
/* Сигнатура */
char sign[7] = { (char)0xB4,
(char)0x83,
(char)0xCD,
(char)0x21,
(char)0x5E,
(char)0x56,
'\0' };
char
/* Строка імені поточного підкаталога */
path[PATH_LEN],
/* Строка імені початкового знаходження */
old_path[PATH_LEN],
/* Строка імені необхідного пристроя */
drive[DRIVE_LEN],
/* Пуста строка */
blank[BLANK_LEN];
int
/* Кількість відсканованих каталогів */
n_dir,
/* Кількість досліджених файлів */
n_fil,
/* Кількість хворих і вилікуваних файлів */
n_ill;
int
/* Довжина імені файлу */
l,
/* Тимчасовий індекс */
i;
/* Рекурсивна процедура обходу дерева каталогу */
int cure(char *fn)
{
    int f = 0;
    int mz;
    int r, q = 0;
    char buf[24]; /* Буфер під байти */
                  /* Відкриваємо файл */
    r = _open(fn, O_RDWR, f);
    if (r) { printf(" – ошибка открытия!"); return 0; }
    /* Читаємо перші два байти для визначення типа програми */
    r = _read(f, &mz, 2);
    if ((r) || (q != 2)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Читаємо збережені вірусом 24 байти старого початку */
    int a1 = -80;
    _lseek(f, a1, SEEK_END);
    r = _read(f, buf, 24);
    if ((r) || (q != 24)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Визначаємо тип програми */
    if ((mz == 0x4D5A) || (mz == 0x5A4D))
    { /* Это exe */
      /* Пишемо правильні PartPag и PageCnt */
        _lseek(f, 2, SEEK_SET);
        r = _write(f, &buf[2], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloSS и ExeSP */
        _lseek(f, 14, SEEK_SET);
        r = _write(f, &buf[14], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloCS и ExeIP */
        _lseek(f, 20, SEEK_SET);
        r = _write(f, &buf[20], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    else
    { /* Это com */
      /* Відновлюємо збережені 3 байти програми */
        _lseek(f, 0, SEEK_SET);
        r = _write(f, &buf[0], 3);
        if ((r) || (q != 3)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    /* Усікаємо файл (переходимо на початок
    вірусу і записуємо 0 байт) */
    _lseek(f, a, SEEK_END);
    r = _write(f, buf, 0);
    /* Закриваємо файл */
    _close(f);
    printf("теперь исцелен!\n");
    return 0;
}
int infected(char *fn)
{
    int f = 0;
    int r, q = 0;
    char buf[7]; /* Буфер під сигнатуру */
                 /* Відкриваємо файл */
    r = _open(fn, O_RDONLY, f);
    if (r) { printf(" – ошибка открытия!"); return GOOD; }
    /* Читаємо 6 байт */
    _lseek(f, a, SEEK_END);
    r = _read(f, buf, 6); buf[6] = '\0';
    if ((r) || (q != 6)) {
        printf(" – ошибка чтения!"); _close(f); return GOOD;
    }
    /* Закриваємо файл */
    _close(f);
    /* Порівнюємо байти з сигнатурою */
    if (strcmp(buf, sign) == 0)
    {
        printf(" – был болен и..."); n_ill++; return BAD;
    } /* Заражений !!! */
    return GOOD;
}
int walk()
{
    int found_d, found_f;
    _finddata64i32_t buf;
    /* Пошук каталогів */
    found_d = _findfirst(".\\*.*", &buf);
 
    while (found_d >= F_FOUND)
    {
        if ((buf.name[0] != '.') && (buf.attrib & _A_SUBDIR))
        {
            _chdir(buf.name);
            walk();
            _chdir("..");
        }
        found_d = _findnext(found_d, &buf);
    }
    n_dir++;
    /* До цього моменту не відсканованих нижележачих каталогів
    Більше не залишилося – скануємо файли */
    _getcwd(path, PATH_LEN);
    /* Пошук файлів */
    _findclose(found_d);
    found_f = _findfirst(".", &buf);
    while (found_f == F_FOUND)
    {
        l = strlen(buf.name);
        if (((buf.name[l - 3] == 'C') &&
            (buf.name[l - 2] == 'O') &&
            (buf.name[l - 1] == 'M')) ||
            ((buf.name[l - 3] == 'E') &&
            (buf.name[l - 2] == 'X') &&
                (buf.name[l - 1] == 'E')))
        {
            n_fil++;
            printf("%c%s", 13, blank);
            printf("%c%s\\%s ", 13, path, buf.name);
            /* Знайшли новий файл – необхідно перевірити, інфікований він чи ні.
            Якщо інфікований, то лікуємо */
            if (infected(buf.name) == BAD) cure(buf.name);
        }
        found_f = _findnext(found_f, &buf);
    }
    return 0;
}
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
    char c;
    printf("Введите название диска : ");
    scanf("%c", &c);
    drive[0] = c; drive[1] = ':'; drive[3] = '\0';
    n_dir = 0;
    n_fil = 0;
    _getcwd(old_path, PATH_LEN);
    drive[2] = '\0'; system(drive);
    drive[2] = '\\'; _chdir(drive);
    /* Запускаємо рекурсивний обхід дерева каталогів
    Для вибраного диску */
    walk();
    old_path[2] = 0; system(old_path);
    old_path[2] = '\\'; _chdir(old_path);
    printf("\nКаталогов : %d\nФайлов : %d\nОбнаружено больных и излечено : %d", n_dir, n_fil, n_ill);
    printf("\n");
    system("pause");
    if (n_ill) exit(1); else exit(0);
    return 0;
}
Вот код целяком.

Добавлено через 1 час 46 минут
Ребята, подскажите что не так. Не могу найти ошибку в программе(
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.06.2018, 15:52
Цитата Сообщение от Jenya16 Посмотреть сообщение
Ребята, подскажите что не так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include "stdafx.h"
#include "dos.h"
#include "windows.h"
#include <fcntl.h>
#include <cstring>
#include <cerrno>
#include <sys\types.h>
#include <sys\stat.h>
#include "stdio.h"
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <cctype>
#include <direct.h>
#include <cassert>
#include "io.h"
#define F_FOUND 0
#define PATH_LEN 128
#define DRIVE_LEN 4
#define BLANK_LEN 80
#define BAD 1
#define GOOD 0
#define DBG
int a = -1740;
/* Сигнатура */
char sign[7] = { (char)0xB4,
(char)0x83,
(char)0xCD,
(char)0x21,
(char)0x5E,
(char)0x56,
'\0' };
char
/* Строка імені поточного підкаталога */
path[PATH_LEN],
/* Строка імені початкового знаходження */
old_path[PATH_LEN],
/* Строка імені необхідного пристроя */
drive[DRIVE_LEN],
/* Пуста строка */
blank[BLANK_LEN];
int
/* Кількість відсканованих каталогів */
n_dir,
/* Кількість досліджених файлів */
n_fil,
/* Кількість хворих і вилікуваних файлів */
n_ill;
int
/* Довжина імені файлу */
l,
/* Тимчасовий індекс */
i;
/* Рекурсивна процедура обходу дерева каталогу */
int cure(char *fn)
{
    int f = 0;
    int mz;
    int r, q = 0;
    char buf[24]; /* Буфер під байти */
                  /* Відкриваємо файл */
    r = _open(fn, O_RDWR, f);
    if (r) { printf(" – ошибка открытия!"); return 0; }
    /* Читаємо перші два байти для визначення типа програми */
    r = _read(f, &mz, 2);
    if ((r) || (q != 2)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Читаємо збережені вірусом 24 байти старого початку */
    int a1 = -80;
    _lseek(f, a1, SEEK_END);
    r = _read(f, buf, 24);
    if ((r) || (q != 24)) { printf(" – ошибка чтения!"); _close(f); return 0; }
    /* Визначаємо тип програми */
    if ((mz == 0x4D5A) || (mz == 0x5A4D))
    { /* Это exe */
      /* Пишемо правильні PartPag и PageCnt */
        _lseek(f, 2, SEEK_SET);
        r = _write(f, &buf[2], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloSS и ExeSP */
        _lseek(f, 14, SEEK_SET);
        r = _write(f, &buf[14], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
        /* Пишимо правильні ReloCS и ExeIP */
        _lseek(f, 20, SEEK_SET);
        r = _write(f, &buf[20], 4);
        if ((r) || (q != 4)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    else
    { /* Это com */
      /* Відновлюємо збережені 3 байти програми */
        _lseek(f, 0, SEEK_SET);
        r = _write(f, &buf[0], 3);
        if ((r) || (q != 3)) { printf(" – ошибка записи!"); _close(f); return 0; }
    }
    /* Усікаємо файл (переходимо на початок
    вірусу і записуємо 0 байт) */
    _lseek(f, a, SEEK_END);
    r = _write(f, buf, 0);
    /* Закриваємо файл */
    _close(f);
    printf("теперь исцелен!\n");
    return 0;
}
int infected(char *fn)
{
    int f = 0;
    int r, q = 0;
    char buf[7]; /* Буфер під сигнатуру */
                 /* Відкриваємо файл */
    r = _open(fn, O_RDONLY, f);
    if (r) { printf(" – ошибка открытия!"); return GOOD; }
    /* Читаємо 6 байт */
    _lseek(f, a, SEEK_END);
    r = _read(f, buf, 6); buf[6] = '\0';
    if ((r) || (q != 6)) {
        printf(" – ошибка чтения!"); _close(f); return GOOD;
    }
    /* Закриваємо файл */
    _close(f);
    /* Порівнюємо байти з сигнатурою */
    if (strcmp(buf, sign) == 0)
    {
        printf(" – был болен и..."); n_ill++; return BAD;
    } /* Заражений !!! */
    return GOOD;
}
int walk()
{
    int found_d, found_f;
    _finddata64i32_t buf;
    /* Пошук каталогів */
    found_d = _findfirst(".\\*.*", &buf);
 
    int init_found_d = found_d;
 
    assert(found_d!=-1);
 
    while (found_d > F_FOUND)
    {
        if ((buf.name[0] != '.') && (buf.attrib & _A_SUBDIR))
        {
            _chdir(buf.name);
            walk();
            _chdir("..");
        }
        found_d = _findnext(found_d, &buf);
    }
    n_dir++;
    /* До цього моменту не відсканованих нижележачих каталогів
    Більше не залишилося – скануємо файли */
    _getcwd(path, PATH_LEN);
    /* Пошук файлів */
    _findclose(init_found_d);
    found_f = _findfirst("*", &buf);
 
    const int init_found_f = found_f;
 
    while (found_f > F_FOUND)
    {
        l = strlen(buf.name);
        if (((buf.name[l - 3] == 'C') &&
            (buf.name[l - 2] == 'O') &&
            (buf.name[l - 1] == 'M')) ||
            ((buf.name[l - 3] == 'E') &&
            (buf.name[l - 2] == 'X') &&
            (buf.name[l - 1] == 'E')))
        {
            n_fil++;
            printf("%c%s", 13, blank);
            printf("%c%s\\%s ", 13, path, buf.name);
            /* Знайшли новий файл – необхідно перевірити, інфікований він чи ні.
            Якщо інфікований, то лікуємо */
            if (infected(buf.name) == BAD) cure(buf.name);
        }
        found_f = _findnext(found_f, &buf);
    }
 
    _findclose(init_found_f);
    return 0;
}
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
    char c;
    printf("Введите название диска : ");
    scanf("%c", &c);
    drive[0] = c; drive[1] = ':'; drive[3] = '\0';
    n_dir = 0;
    n_fil = 0;
    _getcwd(old_path, PATH_LEN);
    drive[2] = '\0'; system(drive);
    drive[2] = '\\'; _chdir(drive);
    /* Запускаємо рекурсивний обхід дерева каталогів
    Для вибраного диску */
    walk();
    old_path[2] = 0; system(old_path);
    old_path[2] = '\\'; _chdir(old_path);
    printf("\nКаталогов : %d\nФайлов : %d\nОбнаружено больных и излечено : %d", n_dir, n_fil, n_ill);
    printf("\n");
    system("pause");
    if (n_ill) 
        exit(1); 
    else 
        exit(0);
}

зы:
_findfirst
_findnext
_findclose

лучше не использовать.

пример, как правильно обходить каталоги:
Получить вывод Dir в программу
0
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 54
04.06.2018, 16:52  [ТС]
Пример, не работает который там указан, миллиард ошибок выводит, плюс непонятная библиотека подключается(
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.06.2018, 17:15
Цитата Сообщение от Jenya16 Посмотреть сообщение
не работает который там указан
там указана ссылочка на онлайн-компилятор,
где можно скомпилить, запустить, и посмотреть глазками.

Цитата Сообщение от Jenya16 Посмотреть сообщение
миллиард ошибок выводит
остановок "здеся" и "тута" не существует.
можешь показать текст ошибок, или ждать телепатов дальше.

Цитата Сообщение от Jenya16 Посмотреть сообщение
плюс непонятная библиотека подключается
можно и без неё:
http://rextester.com/EJDIG92610
0
0 / 0 / 0
Регистрация: 22.05.2019
Сообщений: 44
07.11.2022, 16:44
Jenya16, решили эту проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2022, 16:44

Антивирус удаляет мой exe
я написал программу на c++. упаковал в архив и залил ее на официальный сайт программы. пользователи ее скачивают но при распаковывании...

Почему антивирус матерится на мой исходник?
Когда я пытаюсь запустить компиляцию антивирус(avast) сразу блокирует проект и перемещает в карантин. Вот исходник: ...

Переделать код с Borland C++v3.1 на Visual С++ (антивирус)
Помогите пожалуйста, есть код написан на языке Borland C++v3.1, но в силу того что данный язык не работает на Windows 8 и Windows 10 код...

Антивирус Касперского считает зараженным результат компиляции
Здравствуйте. Второй раз уже сталкиваюсь с .. трояном? Скрин прилагается. &quot;Сейчас я Вам все там почистию&quot; - сказал Касперский. Ага. Не...

Антивирус удаляет exe файлы моих программ
Я однажды сделал одну программу и в функции main написал return 2 int main(){ return 2; } C этих пор антивирус...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru