С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
1

Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime

15.10.2012, 11:53. Показов 1091. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. В этой программе берётся системное время, сначала выводится на экран(всё нормально), а затем передаём это в файл. а в файле время выводится не в том формате. Скажите пожалуйста в чём может быть дело. Чтоб вывести время в файл, надо создать новые часы в программе.

Заранее огромное спасибо за идеи!

заголовоный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef lab_h
#define lab_h
 
struct Time 
{
    int hour;
    int minute;
    int second;
 
};
 
    
 
    void addcl(Time *mass0, int *max); 
    void allcl(Time * mass0,int max);
 
    
    
        
    
#endif
*********************************************************

main.cpp

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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
#include "Lab1.h"
 
 
int main(int argc, char* argv[])
{   
    setlocale(LC_CTYPE, "Russian");
    int max, func;
    FILE *fp;
    fp=fopen(argv[1],"r");        
    if(!fp)
        cout<<"Ошибка!нет файла"<<endl;
 
    fscanf(fp,"%d",&max);
    Time mass0[2];
    
    for (int i=0; i<max; i++)
    {
        fscanf(fp,"%d:%d:%d" , &mass0[i].hour, &mass0[i].minute, &mass0[i].second);
        
        
    }
    
       
        
 
    cout<<"Наши часы"<<endl;
    
    
        
    do
    {
    cout<<"\n   1. Все часы \n   2. Добавить часы \n   3. Выход\n   Выберите нужную опцию: ";  
    cin>>func;
    switch (func) 
    {
        case 1:allcl(mass0, max);
                break;
        case 2: addcl(&mass0[max],&max);
                break;
                case 3: break;              // чтоб сохранить изменения ф файле, нажмите 3
        default: cout<<"Введите нужный номер функции\n";
    }
    }
    while (func!=3);
 
    fclose(fp);
    fp=fopen(argv[1],"w");         
    fprintf(fp,"%d\n",max); 
    for (int i=0; i<max; i++)
    {
        fprintf(fp,"%d:%d:%d \n" , &mass0[i].hour, &mass0[i].minute, &mass0[i].second);
        
    }
    fclose(fp);
 
    return 0;
}
***************************************************

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
// laba1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "Lab1.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
using namespace std;
 
 
 
 
    void printcurrenttime (const Time &t)
 
{
    cout<<(t.hour<10?"0":"")<<t.hour<<":"<<(t.minute<10?"0":"")<<t.minute<<":"<<(t.second<10?"0":"")<<t.second;
}
 
 
 
 
 
void addcl(Time *mass0, int *max)
{
    *max=*max+1;
    cout<<"Начинайте ввод данных(часы-минуты-секунды-город-часовой пояс) \n ";
 
    Time dtime2;
    time_t t;
    tm*temp;
    time(&t);
    temp=localtime(&t);
    dtime2.hour=temp->tm_hour;
    dtime2.minute=temp->tm_min;
    dtime2.second=temp->tm_sec;
    cout<<"Текущее время:  ";
    printcurrenttime(dtime2);
 
   mass0->hour=dtime2.hour;
   mass0->minute = dtime2.minute;
   mass0->second = dtime2.second;
 
    
    
}
 
 
void allcl(Time *mass0, int max)
{
    for (int i=0; i<max; i++) 
        cout<<"Часы № "<<i+1<<" Записанные в "<<" "<<mass0[i].hour<<":"<<mass0[i].minute<<":"<<mass0[i].second<<endl;//-выводим данные с массивов
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2012, 11:53
Ответы с готовыми решениями:

Разработать командный файл, который сначала изменяет системную дату на определенное число лет, а затем восстанавливает исходное значение
в общем пересмотрел множество страниц но ниче нужного для себя не уловил. надеюсь на помощь,задание...

Вычесть дату в миллисекундах
Здравствуйте. Есть код. let days = 2; // кол-во дней let...

Получить дату и время в миллисекундах (timestamp)
как в с шарпе получить из DateTime значения в секундах? например 1490559420 = 26 Mar 2017...

Узнать системную дату
Подскажите, как можно узнать системную дату... При этом, её нужно узнать отдельно день, отдельно...

3
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
16.10.2012, 13:31  [ТС] 2
Цитата Сообщение от lj23lj Посмотреть сообщение
Time dtime2; time_t t; tm*temp; time(&t); temp=localtime(&t); dtime2.hour=temp->tm_hour; dtime2.minute=temp->tm_min; dtime2.second=temp->tm_sec; cout<<"Текущее время: "; printcurrenttime(dtime2); mass0->hour=dtime2.hour; mass0->minute = dtime2.minute; mass0->second = dtime2.second;
вот тут в файл идут адреса полей структуры, а не сами поля. Как вывести поле?
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
16.10.2012, 14:21 3
lj23lj, звездочку перед указателем пиши, и можно оператор-точку использовать. К.О.
1
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
16.10.2012, 15:37  [ТС] 4
Invader_Zim , я пробовал разоминовать, но компилятор ошибку выдаёт. может я не так применяю эту операцию?

Добавлено через 1 час 10 минут
Всё, разобрался. В прототипе функции добавления я передал адрес на массив. соответственно в самой этой функции я передаю в массив напрямую(т.е само поле). и в fscanf(СО ВЗ) и fprintf(писать просто mass0)
0
16.10.2012, 15:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2012, 15:37
Помогаю со студенческими работами здесь

Поменять системную дату
Вообщем при запуске программы надо как то поменять системное время и дату, каким образом это...

Определить системную дату
Здравствуйте, мне необходимо определить системную дату. Т.е. узнать какой сейчас месяц и задать...

Как считать системную дату?
Есть база данных с днями рождения всех студентов группы и преподавателей. Сделанная через case....

Как определить системную дату?
Как найти текущую системную дату на компе, а именно год и записать в переменную типа int?

Получить, изменить, восстановить системную дату
Доброго времени суток. Вот суть моей программы. В Edit1 я ввожу дату(с заранее заготовленной...

Как из VB (Vbscript) изменить системную дату?
Пытаюсь это сделать вот так: Set WshShell = WScript.CreateObject('WScript.Shell') command =...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru