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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> tm_mday,tm_mon,tm_year 
:(
    Опции темы
1kritik1
Дата 2.4.2007, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не могу понять в чем ошибка, она в строке: cout<<c->tm_mday<<'.'<<c->tm_mon<<'.'<<c->tm_year<<'\n';
Код

#include <iostream>
#include <string>
#include <vector>
#include <stdio.h> // standardne sisend-vДljund
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <time.h>

using namespace std;

struct vinegred
{
  time_t data;
  tm g;
  string title;
  string body;
};

int cmp(const void *a,const void *b)
{
  if(*(time_t*)a>*(time_t*)b)return 1;
  if(*(time_t*)a==*(time_t*)b)return 0;
  if(*(time_t*)a<*(time_t*)b)return -1;
}

int cmp2(const void *a,const void *b)
{
  if(*(time_t*)a>*(time_t*)b)return -1;
  if(*(time_t*)a==*(time_t*)b)return 0;
  if(*(time_t*)a<*(time_t*)b)return 1;
}

int main(void){ 
    char *fail="ToDo.xml";
    char rida[480], *pos;
    int vastus;
    int i=0,j=0;
    //char sona={"todo","body"};
    //char maakond={"m","a","a","k","o","n","d"};
    FILE *fp;
    float pindala;
    vector <vinegred> salat;

    if((fp=fopen("ToDo.xml","r"))==NULL)
  {
    fprintf(stderr,"Ei leidnut sissestava faili.\nVajutage suvalise klahvi...");
    getch();
    return 1;
  }
  char *p,*vr,*p2,*p3;
  int t=0;
  tm a;
  vinegred b;
  while(fgets(rida,470,fp)!=NULL)
  {
    vr=rida;
    while(p=strtok(vr,"<>"),vr=NULL,p&&*p!='\n')
    {
      if(t==1)
      {
        b.g.tm_mday=strtol(p,&p2,10);
        b.g.tm_mon=strtol(p2+1,&p3,10);
        b.g.tm_year=strtol(p3+1,&p2,10);
        b.data=mktime(&a);
        t=0;
      }
      else if(t==2)
      {
        b.title=p;
        t=0;
      }
      else if(t==3)
      {
        b.body=p;
        t=0;
      }
      else if(strcmp(p,"date")==0)
        t=1;
      else if(strcmp(p,"title")==0)
        t=2;
      else if(strcmp(p,"body")==0)
        t=3;
      else if(strcmp(p,"/todo")==0)
        salat.push_back(b);
    }
  }
  fclose(fp);
  //(salat.begin(),salat.end(),cmp);
  tm *c;
  //getchar();
  for(int i=0;i<salat.size();i++)
  {
    getchar();
    c=gmtime(&salat[i].data);
    cout<<c->tm_mday<<'.'<<c->tm_mon<<'.'<<c->tm_year<<'\n';
    printf("%d,%d",c->tm_mday,c->tm_mon);
    cout<<salat[i].title<<'\n';
    cout<<salat[i].body<<"\n\n";
    getch();
  }
  
  
  getch();
  return 0;
}

PM MAIL   Вверх
archimed7592
Дата 2.4.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



и с чего же ты взял, что там ошибка? телепатов здесь нет...

Добавлено через 1 минуту и 40 секунд
зы. не слышал пока про компиляторы c++, нормально воспринимающие исходники в юникоде... учти это (4-я строчка)


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
threef
Дата 2.4.2007, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

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



Код

tm c = *gmtime(&salat[compot].chislo);
// нужно выделить место для хрнения результата
// tm *c места не выделяет
 cout<<c.tm_mday<<'.'<<c.tm_mon<<'.'<<c.tm_year<<'\n';



Все будет хорошо 
PM MAIL   Вверх
Fazil6
Дата 2.4.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

// нужно выделить место для хрнения результата
// tm *c места не выделяет

какое место? gmtime возвращает адрес своей локальной статической переменной так что не нужно ничего выделять.
PM MAIL   Вверх
threef
Дата 2.4.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

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



Fazil6, yes, работает, был неправ. Хуже, позволяет изменять эту свою переменную.
PM MAIL   Вверх
Fazil6
Дата 2.4.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(threef @  2.4.2007,  23:04 Найти цитируемый пост)
Хуже, позволяет изменять эту свою переменную.

да она ей по барабану, хотите изменяйте, хотите нет. Она ей нужна только для записи результата своей работы.... другой вопрос, что gmtime ее перезаписывает при каждом вызове и если данные нужны долгосрочно, то их нужно копировать из этой переменной
PM MAIL   Вверх
vinter
Дата 2.4.2007, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(archimed7592 @  2.4.2007,  21:58 Найти цитируемый пост)
зы. не слышал пока про компиляторы c++, нормально воспринимающие исходники в юникоде.

а VS2005??


--------------------
Мой блог
PM MAIL WWW   Вверх
1kritik1
Дата 2.4.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



изменил 
Код

tm *c;
 на
Код

tm c = *gmtime(&salat[compot].chislo);

 и
Код

cout<<c->tm_mday<<'.'<<c->tm_mon<<'.'<<c->tm_year<<'\n';
на
Код

cout<<c.tm_mday<<'.'<<c.tm_mon<<'.'<<c.tm_year<<'\n';

выдает:
Код
91 D:\ToDo.cpp `compot' undeclared (first use this function) 
  (Each undeclared identifier is reported only once for each function it appears in.) 
95 D:\ToDo.cpp no match for 'operator=' in 'c = gmtime(((const time_t*)((time_t*)(+(&salat)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = vinegred, _Alloc = std::allocator<vinegred>](((unsigned int)i))))))' 
 note C:\Dev-Cpp\include\time.h:65 candidates are: tm& tm::operator=(const tm&) 
 как  этот "compot" надо задекларировать?
PM MAIL   Вверх
archimed7592
Дата 2.4.2007, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(vinter @  2.4.2007,  23:29 Найти цитируемый пост)
а VS2005?? 
и что же нужно указать в аргументах компилятора, чтобы случилось это чудо? smile или он сам узнаёт юникод-исходники?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
threef
Дата 2.4.2007, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

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



Лучше скажи, что именно у ТЕБЯ было неправильно, а компот и число убери, оставь свой текст, это меня бес попутал. Что не так работает у тебя ?
PM MAIL   Вверх
1kritik1
Дата 2.4.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(threef @ 2.4.2007,  23:36)
Лучше скажи, что именно у ТЕБЯ было неправильно, а компот и число убери, оставь свой текст, это меня бес попутал. Что не так работает у тебя ?

вернуть как было? если да, то выдаетсяП.С. это Dev-C++ ошибка и просит послать баг-репорт
П.С. это Dev-C++

Добавлено через 57 секунд
Цитата(archimed7592 @ 2.4.2007,  23:34)
Цитата(vinter @  2.4.2007,  23:29 Найти цитируемый пост)
а VS2005?? 
и что же нужно указать в аргументах компилятора, чтобы случилось это чудо? smile или он сам узнаёт юникод-исходники?

уже убрал
PM MAIL   Вверх
archimed7592
Дата 2.4.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Цитата(1kritik1 @  2.4.2007,  23:42 Найти цитируемый пост)
если да, то выдается
чего выдаётся то?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
1kritik1
Дата 2.4.2007, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ой, выдает ошибку и просит послать баг-репорт(Вин ХР)

Добавлено через 6 минут и 19 секунд
если закомментировать эту строку: cout<<c->tm_mday<<'.'<<c->tm_mon<<'.'<<c->tm_year<<'\n'; , то все работает на ОК.

Это сообщение отредактировал(а) 1kritik1 - 2.4.2007, 23:47
PM MAIL   Вверх
Fazil6
Дата 3.4.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(1kritik1 @  2.4.2007,  23:45 Найти цитируемый пост)
если закомментировать эту строку:

вообще-то ошибки в этой строке нет.
А если 
Код

cout<<c->tm_mday<<'.'<<c->tm_mon<<'.'<<c->tm_year<<'\n';

заменить на
Код

 printf("%d.%d.%d\n",c->tm_mday,c->tm_mon, c->tm_year );

нормально  будет работать?
PM MAIL   Вверх
1kritik1
Дата 3.4.2007, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тоже самое, уже пробовал, но и в очередной раз не хочет пахать. На всякий случай вставлю XML, с чем эа прога должна работать.
Код

<xml>
<todo>
<date>19.04.2006</date>
<title>den.rozdenija</title>
<body>Moj den rozdenija</body>
</todo>
<todo>
<date>18.04.2006</date>
<title>ekzamen</title>
<body> U Iri pism ekzamen po est.</body>
</todo>
<todo>
<date>20.04.2006</date>
<title>ekzamen</title>
<body>U Iri ust ekzamen po est.</body>
</todo>
</xml>


Это сообщение отредактировал(а) 1kritik1 - 3.4.2007, 07:38
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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