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

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

Восстановить пароль Регистрация
 
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
15.10.2012, 11:53     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime #1
Добрый день. В этой программе берётся системное время, сначала выводится на экран(всё нормально), а затем передаём это в файл. а в файле время выводится не в том формате. Скажите пожалуйста в чём может быть дело. Чтоб вывести время в файл, надо создать новые часы в программе.

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

заголовоный файл
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;//-выводим данные с массивов
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2012, 11:53     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime
Посмотрите здесь:

функция localtime() и Visual C++ 2008 C++
C++ localtime и tm *
Написать программу, которая предлагает пользователю ввести дату в формате YYYY MM DD и выводит в консоль, следующую за ней дату C++
C++ Написать программу, которая предлагает пользователю ввести дату в формате YYYY MM DD и выводит в консоль, следующую за ней дату
C++ Написать функцию, которая получает дату и выводит название праздника
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
16.10.2012, 13:31  [ТС]     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime #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;
вот тут в файл идут адреса полей структуры, а не сами поля. Как вывести поле?
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
16.10.2012, 14:21     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime #3
lj23lj, звездочку перед указателем пиши, и можно оператор-точку использовать. К.О.
lj23lj
1 / 1 / 0
Регистрация: 15.11.2011
Сообщений: 34
16.10.2012, 15:37  [ТС]     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime #4
Invader_Zim , я пробовал разоминовать, но компилятор ошибку выдаёт. может я не так применяю эту операцию?

Добавлено через 1 час 10 минут
Всё, разобрался. В прототипе функции добавления я передал адрес на массив. соответственно в самой этой функции я передаю в массив напрямую(т.е само поле). и в fscanf(СО ВЗ) и fprintf(писать просто mass0)
Yandex
Объявления
16.10.2012, 15:37     Выводит системную дату в файл в миллисекундах, не смотря на работу фунцкии localtime
Ответ Создать тему
Опции темы

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