Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.90
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
#1

что то вроде программки,которая проверяет Hosts и лечит - C++

29.10.2009, 19:14. Просмотров 7063. Ответов 99
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void main (){
 
int c=0;
FILE *f=fopen("C:\WINDOWS\system32\drivers\etc\hosts", "a");
 
while((c=getc(f))!=EOF){
 
    if(c!="127.0.0.1 localhost"){
        cout<<"File hosts is infected";
f = fopen("C:\WINDOWS\system32\drivers\etc\hosts", "w");
fputs("127.0.0.1 localhost", f);
    }
}
 
fclose(f);
 
}
это мой код,вот на этом месте
if(c!="127.0.0.1 localhost")
я на этом месте не знаю как поступить
надо написать код,ктороый если находит другие строки кроме заводских строк-должен удалять их...как сделать?

Добавлено через 4 минуты
вопрос некорректно задал
в файле есть некий текст,определить,если кроме этого текста есть и другие слова,то удалить весь текст и добавить
127.0.0.1 loaclhost
это мой алгоритмн
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 19:14     что то вроде программки,которая проверяет Hosts и лечит
Посмотрите здесь:

Написать функцию которая проверяет кратность двух чисел C++
Написать программу которая по заданному n проверяет число на палиндром C++
Написать функцию которая проверяет на уникальность каждый номер C++
Составьте фрагмент программы которая проверяет делится ли введенное число на 15 C++
Написать функцию, которая проверяет, является ли переданное ей число простым? C++
C++ Написать программу, которая проверяет, является ли год високосным
Напишите функцию, которая проверяет, отсортирован ли массив вещественных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 19:20     что то вроде программки,которая проверяет Hosts и лечит #2
Цитата Сообщение от МедведЪ Посмотреть сообщение
[CPP
Добавлено через 4 минуты
вопрос некорректно задал
в файле есть некий текст,определить,если кроме этого текста есть и другие слова,то удалить весь текст и добавить
127.0.0.1 loaclhost
это мой алгоритмн
ты знаешь какой текст есть в файле? если да, то сравнивай посимвольно с исходным и корректируй как хочешь, если встретишь не соответсвие. но что-то мне подсказывает, что первичное наполнение файла не известно.
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
29.10.2009, 19:26  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #3
этот файл-hosts а что там находится все прогеры знают

Цитата Сообщение от TanT Посмотреть сообщение
сравнивай посимвольно с исходным
как?
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
29.10.2009, 19:32     что то вроде программки,которая проверяет Hosts и лечит #4
C
1
int c=0;
У тебя переменная int, заведи переменную char* или что-то в этом духе.И читай построчно.Найди где-нибудь creference и погляди,какие нужные функции для этого есть.
А вообще начинание хорошее.Типа против заразы
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 19:35     что то вроде программки,которая проверяет Hosts и лечит #5
Цитата Сообщение от МедведЪ Посмотреть сообщение
этот файл-hosts а что там находится все прогеры знают

как?
я ж не прогер, я не знаю, честно.
а как? #pragma, ответил
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
29.10.2009, 20:03  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #6
Цитата Сообщение от #pragma Посмотреть сообщение
creference
Что это такое?
Цитата Сообщение от #pragma Посмотреть сообщение
И читай построчно
нувот как?
C++
1
while(c!=EOF)
???

Добавлено через 1 минуту
Цитата Сообщение от #pragma Посмотреть сообщение
А вообще начинание хорошее.Типа против заразы
АГА
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
29.10.2009, 21:57     что то вроде программки,которая проверяет Hosts и лечит #7
"С reference" - обзор библиотеки Сhttp://www.google.ru/search?hl=ru&so...%B2+Google&lr=
Функция чтения построчно http://www.cplusplus.com/reference/c.../cstdio/fgets/
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
29.10.2009, 22:01  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #8
#pragma, там все на англ...я понимаю,ты хочешь что бы я прочел про него,но щас мне код нужен....благодарен тебе за это
HIMen
4119 / 1368 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
29.10.2009, 22:03     что то вроде программки,которая проверяет Hosts и лечит #9
а че его читать-то? пиши туда сразу 127.0.0.1 loaclhost и все
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
29.10.2009, 22:07  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #10
HIMen, в hosts-e не только 127.0.0.1,но и комментарии,если написать только ИП то программа будет счиать что эти комментарии-зараза....там целый текст
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
29.10.2009, 23:03     что то вроде программки,которая проверяет Hosts и лечит #11
Комментарии можешь тереть.Толку то от них,ты же английский не понимаешь,так три их в самом начале,и так и оставь файл,чтобы была одна строка.Если добавилось что-то,значит тревога.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
29.10.2009, 23:20     что то вроде программки,которая проверяет Hosts и лечит #12
МедведЪ, поставь '\\', вместо '\'
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
30.10.2009, 04:00     что то вроде программки,которая проверяет Hosts и лечит #13
Вот попробуй.Сделай резервную копию файла где нибудь,и путь укажи в программе там где написано.Только помни,что нужны двойные слеши в пути.
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
#include <stdio.h>
#include <stdlib.h>
 
#define MAX_STRING_SIZE 255
 
int main()
{
   FILE *file;
   FILE *etalon;
 
   char *str_in_file = (char *)malloc(MAX_STRING_SIZE);
   char *str_in_etalon = (char *)malloc(MAX_STRING_SIZE);
 
   if ((file = fopen("C:\\WINDOWS\\system32\\drivers\\etc\\hosts", "a+")) == NULL)
   {
      printf("File \"hosts\" doesn't exist!");
      exit(EXIT_FAILURE);
   }
   if ((etalon = fopen("Тут твой путь к файлу-эталону", "r")) ==  NULL)
   {
      printf("Etalon file doesn't exist!");
      exit(EXIT_FAILURE);
   }
 
   while(fgets(str_in_file,MAX_STRING_SIZE,file) != NULL) {
 
     str_in_etalon = fgets(str_in_etalon,MAX_STRING_SIZE,etalon);
 
     if (strcmp(str_in_file,str_in_etalon))
     {
        printf("File hosts is changed,found this string: %s,removing...",str_in_file);
        fputs(str_in_etalon, file);
     }
     else printf("This string looks ok.\n");
   }
 
   free(str_in_file);
   free(str_in_etalon);
 
   fclose(etalon);
   fclose(file);
 
   return 0;
}
Может,и корявенько,но думаю сойдёт Если интересно,разберись сам с хеш-функциями,и просто сравнивай "чек-суммы",думаю это оптимальный вариант.

Добавлено через 10 минут
Ой,я тут маненько ошибся,там если найдена чужеродная строка,нужно начать читать файлы заново,и перезаписать их построчно,а лучше просто заменить файл на эталон,а то нормальная строка может записаться в самый конец файла,а не на своё место.Но ты уже сам доделай,ок ? =)
Search..
30.10.2009, 04:22
  #14

Не по теме:


Помню, как только зарегистрировался на этом форуме, заметил очень выделяющегося пользователя - #pragma. Выделялся он тем, что у него было рвение изучить с/с++ настолько огромно, что это не передать словами. Короче говоря, в отличие от многих людей, которые хотели что-то изучить и говорили "ой это же сложно и т.д." - #pragma учил и не на что не жаловался. Вот, прошло около полу года, как #pragma дает действительно полезные советы (в данном случае) пользователю МедведЪ. Очень впечатляют такие люди, т.к. их единицы. Извиняюсь за офтоп.

inter
9694 / 2449 / 46
Регистрация: 06.03.2009
Сообщений: 8,503
30.10.2009, 04:24     что то вроде программки,которая проверяет Hosts и лечит #15
Search.., в данном случае соглашусь, прагме +
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
30.10.2009, 09:55  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #16
Цитата Сообщение от #pragma Посмотреть сообщение
free(str_in_file);
free(str_in_etalon);
Цитата Сообщение от #pragma Посмотреть сообщение
(char *)malloc
в эти штучки мне не знакмоыПрокомментируй
inter
9694 / 2449 / 46
Регистрация: 06.03.2009
Сообщений: 8,503
30.10.2009, 09:59     что то вроде программки,которая проверяет Hosts и лечит #17
ну по аналогии то хотя бы? стринг понятно?
стринг в файле, стринг в эталоне(в образце)?
ну а чар и маллок в хелпе описаны?
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
30.10.2009, 11:20     что то вроде программки,которая проверяет Hosts и лечит #18
Цитата Сообщение от МедведЪ Посмотреть сообщение
в эти штучки мне не знакмоыПрокомментируй
C
1
2
   char *str_in_file = (char *)malloc(MAX_STRING_SIZE);
   char *str_in_etalon = (char *)malloc(MAX_STRING_SIZE);
Здесь мы выделяем память под строку размером MAX_STRING_SIZE с помощью функции malloc.Функция возвращает указатель на область памяти,ей выделенную,сама функция имеет тип void* ,поэтому мы её насильно приводим к типу char*.
C
1
2
   free(str_in_file);
   free(str_in_etalon);
А тут память освобождается.Сейчас пригляделся,оказывается malloc может возвращать NULL при неудаче,я этого не знал.Лучше мне,наверное,ничего не советовать,а то насоветую всякую чушь.
В-общем,нужно и для malloc делать проверки на NULL.
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
30.10.2009, 14:28  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #19
#pragma, большое спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2009, 20:27     что то вроде программки,которая проверяет Hosts и лечит
Еще ссылки по теме:

Напишите функцию, которая проверяет, отсортирован ли массив C++
Нужна программа которая проверяет, является ли число простым C++
Составить программу, которая проверяет число на четность C++
C++ написать программу которая проверяет , находится ли конкретный символ в строке ?
C++ Написать программу, которая проверяет удачливость билета

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
30.10.2009, 20:27  [ТС]     что то вроде программки,которая проверяет Hosts и лечит #20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
   FILE * pFile;
   char mystring [100];
 
   pFile = fopen ("myfile.txt" , "r");
   if (pFile == NULL) perror ("Error opening file");
   else {
     fgets (mystring , 100 , pFile);
     puts (mystring);
     fclose (pFile);
   }
   return 0;
}
я этот код не понял,mystring Это типа сожеражние фалйа да,ну типа сравнивает?
я этот момент не понял
fgets (mystring , 100 , pFile);

Добавлено через 33 минуты
вот переделал код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void main (){
 
FILE * f;
int c=0;
   char mystring [1000]; 
   f = fopen ("D:\\ALEX RESERF\\ALEX\\111.txt" , "r");
 
   if (f == NULL) perror ("Cant open file");
   else {
 
       while((c=getc(f))!=EOF){
 
     fgets (mystring , 1000 , f);
     puts (mystring);
     }
 
   }
 
fclose (f);
 
system("pause");
 
}
теперь выводит весь текст выводит...но все таки я не понял до конца...как сдела если прога увидит лишние строки то сообщать об этом и удалить их?какая функция?

Добавлено через 9 минут
вот мой новый
код
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
#include <windows.h>
#include <string.h>
#include <string>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream> 
using namespace std;
 
void main (){
 
FILE * f;
int c=0;
   char mystring [1000]; 
   f = fopen ("D:\\ALEX RESERF\\ALEX\\111.txt" , "r");
 
   if (f == NULL) perror ("Cant open file");
   else {
 
       while((c=getc(f))!=EOF){
 
     fgets (mystring , 200 , f);
     puts (mystring);
     }
 
   }
   cout<<"\nMy\n"<<mystring;
 
fclose (f);
 
system("pause");
 
}
код
вот в этом месте cout<<"\nMy\n"<<mystring; выводит только последнюю строку,как сделать что последние 2?3?
Yandex
Объявления
30.10.2009, 20:27     что то вроде программки,которая проверяет Hosts и лечит
Ответ Создать тему
Опции темы

Текущее время: 16:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru