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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.96
selevit
79 / 75 / 3
Регистрация: 08.10.2008
Сообщений: 296
#1

Таймер в консольном приложении - C++

24.09.2009, 16:12. Просмотров 3407. Ответов 17
Метки нет (Все метки)

Всем доброго времени суток, у меня вопрос, как сделать так, чтобы программа записывала текст в файл, а, к примеру через 40 минут стирала весь текст из этого файла? как можно реализовать это в таком коде?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <stdio.h>
 
int main()
{
  FILE* file;
  char* file_name = "C:\\WINDOWS\\System32\\drivers\\etc\\hosts";
 
  file = fopen(file_name, "a");
  
  if(!file)
    return 0;
 
  fseek(file, 0, SEEK_END);
  
  fputs("\n93.158.134.11 vkontakte.ru", file );
  
  fclose( file );
 
  return 0;
}
P.S. Если диска С: не существует то программа не заработает -
C++
1
char* file_name = "C:\\WINDOWS\\System32\\drivers\\etc\\hosts";
, я слышал о %systemroot%, но не знаю как это оформляется.

Заранее спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2009, 16:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Таймер в консольном приложении (C++):

Таймер в консольном приложении - C++
Подскажите, как сделать чтобы консольное приложение было постоянно запущено и раз в 1 минуту выполняло одну из функций? Добавлено...

Таймер в консольном однопоточном приложении на c++ - C++
Привет всем! Я только начинаю разбираться в c++, но опыт программирования все же имеется, правда на Pawn, но что к чему я понимаю. Решил...

Как реализовать таймер в консольном приложении? - C++
И как-нибудь без while и sleep, чтобы программа не висела. Пытался делать через winapi, но не понял как функцию, выполняемую при &quot;тикании&quot;...

Ошибка в консольном приложении - C++
{ class Program { public struct Point { public int X; public int Y; ...

CAsyncSocket в консольном приложении - C++
Пишу простейшие приложения (сервер, клиент) с использованием CAsyncSocket. Проблема в том, что callback функции не вызываются в консольном...

WxWidgets - в консольном приложении - C++
Начал изучение библиотек wxWidgets в Code Blocks, столкнулся с проблемой компиляции, вроде все подключено,просто строку в консоль выводит а...

17
AnonymC
1164 / 446 / 24
Регистрация: 23.06.2009
Сообщений: 6,287
Завершенные тесты: 1
24.09.2009, 16:23 #2
selevit, удалять нельзя,можно только перезписать в другой файл результат.
0
selevit
79 / 75 / 3
Регистрация: 08.10.2008
Сообщений: 296
24.09.2009, 16:25  [ТС] #3
спасибо, как так удалять нельзя, ведь есть же такая функция стирания всего текста из файла?
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
24.09.2009, 16:25 #4
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
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
 
int main()
{
  FILE* file;
  char* file_name = "C:\\WINDOWS\\System32\\drivers\\etc\\hosts";
 
  file = fopen(file_name, "a");
  
  if(!file)
    return 0;
 
  fseek(file, 0, SEEK_END);
  
  fputs("\n93.158.134.11 vkontakte.ru", file );
  
  fclose( file );
 
  Sleep(40 * 60 * 1000); // ждём 40 минут
 
  file = fopen(file_name, "w+t"); // стираем весь текст
  fclose(file);
 
  return 0;
}
1
AnonymC
1164 / 446 / 24
Регистрация: 23.06.2009
Сообщений: 6,287
Завершенные тесты: 1
24.09.2009, 16:27 #5
таймер
C++
1
2
3
4
5
int i=40;
while(40!=0){
Sleep(60000);//1000=1 секунду
--i;
}
Добавлено через 59 секунд
Цитата Сообщение от Rififi Посмотреть сообщение
Sleep(40 * 60 * 1000); // ждём 40 минут
этого не знал.

selevit, так лучше,удобнее

Добавлено через 1 минуту
Rififi, а что такое file_name?
0
selevit
79 / 75 / 3
Регистрация: 08.10.2008
Сообщений: 296
24.09.2009, 16:31  [ТС] #6
спасибо, еще вопрос, как сделать, чтобы консоль не висела на экране 40 минут, а просто сворачивалась в процессы?
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,777
24.09.2009, 18:10 #7
Цитата Сообщение от МедведЪ Посмотреть сообщение
while(40!=0)
Так и Sleep никакого не нужно - само уснёт
0
AnonymC
1164 / 446 / 24
Регистрация: 23.06.2009
Сообщений: 6,287
Завершенные тесты: 1
24.09.2009, 22:16 #8
easybudda, просто дело в том что можно выводить на экран с помощью int i-а..
то есть если слип,то нельзя узнать сколько осталось времени а если int то cout<<i;
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,777
24.09.2009, 23:15 #9
МедведЪ,
C++
1
while ( i > 0 )
Почувствуйте разницу. У Вас бесконечный цикл получается.
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.09.2009, 04:17 #10
Цитата Сообщение от selevit
я слышал о %systemroot%, но не знаю как это оформляется
C
1
2
3
4
5
6
7
8
#include <stdlib.h>
 
...
 
    char *p;
 
    if ((p = getenv("systemroot")))
        printf("%s" "\n", p);
2
Fun4life
0 / 0 / 0
Регистрация: 21.09.2009
Сообщений: 3
25.09.2009, 04:46 #11
написанный выше код напоминает мне участок хорошо знакомого всем вируса))))
осторожнее товарищи!!!!
0
AnonymC
1164 / 446 / 24
Регистрация: 23.06.2009
Сообщений: 6,287
Завершенные тесты: 1
25.09.2009, 15:25 #12
Цитата Сообщение от easybudda Посмотреть сообщение
Почувствуйте разницу. У Вас бесконечный цикл получается.
C++
1
2
3
4
5
6
7
8
9
int i=40;
while(i!=0){
--i;
cout<<i;
system("cls");
Sleep(60*1000);
 
 
}
прокомпилируй
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,473
26.09.2009, 12:07 #13
Цитата Сообщение от selevit Посмотреть сообщение
спасибо, еще вопрос, как сделать, чтобы консоль не висела на экране 40 минут, а просто сворачивалась в процессы?
http://vsokovikov.narod.ru/New_MSDN_...showwindow.htm
1
AnonymC
1164 / 446 / 24
Регистрация: 23.06.2009
Сообщений: 6,287
Завершенные тесты: 1
26.09.2009, 16:10 #14
kravam, попробывал,у меня что то не то,может не правильно делаю...вот мой код
C++
1
2
3
4
5
6
7
BOOL ShowWindow(
 
HWND hWnd, SW_FORCEMINIMIZE
 
int nCmdShow  
 
);
что не так?
0
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,473
26.09.2009, 17:06 #15
МедведЪ, да всё не так.
Не надо копировать объявление функции, тем более неправильно (по указанной мной ссылке 2 аргумента, а у тебя 3)

Надо подсоединить заголовочный файл, где это объявление уже прописано.
Потом правильно вызвать эту функцию.
В числе прочего разобраться с хэндлом окна. (Первый аргумент, как его найти)
Ну, то есть забить в поисковике "Как найти хэндл окна". Это нетрудно, я как-то занимался этим, хэндл окна находиться по его названию, а в случае с консолью это название есть заголовок консоли...

Короче, вот код, нашёл у себя. Сперва создаёт окно, а потом его свёртывает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define MY_BUFSIZE 1024   
#include <stdio.h>
#include <windows.h>
 
int main(){
 
 char AdresZagolovkaOkna [MY_BUFSIZE];
 char BuferDlaProverki [MY_BUFSIZE];
 HWND DeskriptorOkna;
 
 GetConsoleTitle(AdresZagolovkaOkna, MY_BUFSIZE);
 DeskriptorOkna= FindWindow(NULL, AdresZagolovkaOkna);
 
 
  getchar (); 
 
 ShowWindow (DeskriptorOkna, SW_MINIMIZE);
 
  getchar ();
  return 0;
}
Вот так свёртывайте.
Настоятельно рекомендую ознакомиться с API-функциями

GetConsoleTitle
FindWindow
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2009, 17:06
Привет! Вот еще темы с ответами:

Изображение в консольном приложении. - C++
Помогите, пожалуйста, с загрузкой и отображением изображений формата bmp в консольном приложении C++. Очень надо! Заранее спасибо.

Тетрис в консольном приложении - C++
Помогите с написанием тетриса в консоли, пожалуйста. Как сделать поле, и чтобы по нему передвигалась фигура? И чтобы можно было стрелками...

Таблица в консольном приложении - C++
Здравствуйте. Помогите пожалуйста советом, как организовать таблицу в консольном приложении? Таблица состоит из n строк и 2 столбцов.

Вывод в консольном приложении - C++
Всем доброго времени суток. Написал приложение выводящие через printf 5 строк с паузой в 1 сек. При обычном запуске всё работает хорошо....


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
26.09.2009, 17:06
Ответ Создать тему
Опции темы

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