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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает функция time под ОС linux 
:(
    Опции темы
user678
Дата 10.9.2010, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На одной машине функция time возвращает текущее время, а на другой машине функция time возвращает время первого вызова функции. Скажите пожалуйста в чем причина и как это исправить.
#include <stdio.h>
#include <sys/types.h>
#include <time.h>


           time_t t1,t2;

           (void) time(&t1);
            (void) time(&t2);
           
            int dif = 0;
            do {
                 //some work
                 (void) time(&t2);
                 dif = (int) t2 - t1;
                 printf ("Time %d\n", dif);
            } while(dif<30);
PM MAIL   Вверх
boostcoder
Дата 10.9.2010, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

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



Цитата(user678 @  10.9.2010,  06:32 Найти цитируемый пост)
возвращает время первого вызова функции

а она не в какой-то статической функции?
в общем, показывайте код, ОС, версию компилятора.
PM WWW   Вверх
proc_maker
Дата 13.9.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А Вы неправильно получаете результат:

#include <time.h>

time_t time(time_t *t);


Следовательно:
Код


time_t t1 = time(0);

...

time_t t2 = time(0);

PM MAIL ICQ Skype   Вверх
svlary
Дата 15.9.2010, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

на другой машине функция time возвращает время первого вызова функции.

   Из приведенного текста программы, никак не следует, что t2 - время первого вызова! На самом деле, вы просто выводите значение :
 
Код

dif = (int) t2 - t1;

А вот значение dif может быть нулевым по разным причинам :
  • Выполнение  //some work заняло менее 1 секунды.
  • Выражение, которое Вы использовали, логически неверно. На самом деле оно должно быть записано так :  (int) (t2 - t1). Это может привести к непредсказуемым последствиям.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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