Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > ctime

Reply
Thread Tools

ctime

 
 
berkay
Guest
Posts: n/a
 
      10-29-2005
long num,num1;
char *first;
char *last;

num=ilk.getTime();//gets time
first=ctime(&num);
cout.flush();
fflush(stdin);
1) cout<<"first:"<<first;

num1=son.getTime();
last=ctime(&num1);
cout.flush();
fflush(stdin);

2)cout<<"first:"<<first<<endl;///it prints the same value with last
why?
3) cout<<"last:"<<last<<endl;
1 and 2 prints different values,2 and 3 prints the same value why?

 
Reply With Quote
 
 
 
 
Jonathan Mcdougall
Guest
Posts: n/a
 
      10-29-2005
berkay wrote:

> long num,num1;
> char *first;
> char *last;


This is bad style in C++. You should always initialize your variables.

> num=ilk.getTime();//gets time


What's ilk?

> first=ctime(&num);


ctime takes a time_t*, not a long*.

> cout.flush();
> fflush(stdin);


What for?

> 1) cout<<"first:"<<first;
> num1=son.getTime();


What's son?

> last=ctime(&num1);
> cout.flush();
> fflush(stdin);
>
> 2) cout<<"first:"<<first<<endl;
> ///it prints the same value with last why?


Dunno.

> 3) cout<<"last:"<<last<<endl;
> 1 and 2 prints different values,2 and 3 prints the same value why?


Again, how do you expect us to answer (or understand) that?

Please post complete, compilable, well-formated programs along with a
clear question.


Jonathan

 
Reply With Quote
 
 
 
 
berkay
Guest
Posts: n/a
 
      10-29-2005
here is the whole program
#include <ctime>
#include<iostream>
#include<strstream>
using namespace std;



class TimeStamp{

time_t zaman;
public:

void setZaman()
{
time(&zaman);
}

time_t getZaman()
{
return zaman;
}
void print()
{

cout<<ctime(&zaman)<<endl;
}
};

class Task{
private:
TimeStamp ilk;
TimeStamp son;
char *birinci;
char *sonuncu;
long sayi,sayi1;
char totalday[24];
char gun[4];
char ay[4];
int ayinKaci,hour,min,sec,yil;
char arr[3];
char yilim[5];
public:
void zamanyazdir()
{
ilk.setZaman();
for(int i=0;i<1000000000;i++){}//for the times to be different
son.setZaman();
}

void zamanFarki()
{

cout<<difftime(son.getZaman(),ilk.getZaman())<<end l;

}

void kopyala()
{
sayi=ilk.getZaman();
birinci=ctime(&sayi);
cout.flush();
fflush(stdin);

sayi1=son.getZaman();
cout<<"birinci:"<<birinci<<endl;//1
cout.flush();
fflush(stdin);


sonuncu=ctime(&sayi1);
cout<<"birinci:"<<birinci<<endl;//2
cout<<"sonuncu:"<<sonuncu<<endl;//3
//1 and 2 prints different values

}


void ctimeOlarak()
{
ilk.print();
son.print();
}
};

void main(){

Task myTask;
myTask.zamanyazdir();
myTask.kopyala();
myTask.zamanFarki();
myTask.ctimeOlarak();




}

 
Reply With Quote
 
Jonathan Mcdougall
Guest
Posts: n/a
 
      10-29-2005
berkay wrote:
> here is the whole program
> #include <ctime>
> #include<iostream>
> #include<strstream>
> using namespace std;
>
>
>
> class TimeStamp{
>
> time_t zaman;
> public:
>
> void setZaman()
> {
> time(&zaman);
> }
>
> time_t getZaman()
> {
> return zaman;
> }
> void print()
> {
>
> cout<<ctime(&zaman)<<endl;
> }
> };
>
> class Task{
> private:
> TimeStamp ilk;
> TimeStamp son;
> char *birinci;
> char *sonuncu;
> long sayi,sayi1;
> char totalday[24];
> char gun[4];
> char ay[4];
> int ayinKaci,hour,min,sec,yil;
> char arr[3];
> char yilim[5];
> public:
> void zamanyazdir()
> {
> ilk.setZaman();
> for(int i=0;i<1000000000;i++){}//for the times to be different
> son.setZaman();
> }
>
> void zamanFarki()
> {
>
> cout<<difftime(son.getZaman(),ilk.getZaman())<<end l;
>
> }
>
> void kopyala()
> {
> sayi=ilk.getZaman();


A time_t is not a long!

> birinci=ctime(&sayi);
> cout.flush();
> fflush(stdin);
>
> sayi1=son.getZaman();
> cout<<"birinci:"<<birinci<<endl;//1
> cout.flush();
> fflush(stdin);
>
>
> sonuncu=ctime(&sayi1);
> cout<<"birinci:"<<birinci<<endl;//2
> cout<<"sonuncu:"<<sonuncu<<endl;//3
> //1 and 2 prints different values


Yes. ctime() returns a static pointer to a char. Every time you call
it, it will modify it. You should copy that string as soon as you get
it:

# include <string>
# include <ctime>
# include <iostream>

int main()
{
std::time_t now = std::time(0);

// make a copy in 's'
std::string s = std::ctime(&now);
std::cout << "s:" << s << std::endl;

// wait a couple of seconds

now = std::time(0);
std::string s2 = std::ctime(&now);

std::cout << "s:" << s << std::endl
<< "s2:" << s2;
}

<snip>

> void main(){


main() returns an int.

Note that this is an english-only newsgroup. It will be easier for
everybody if you translate the names in english.


Jonathan

 
Reply With Quote
 
Ian
Guest
Posts: n/a
 
      10-29-2005
berkay wrote:
> ilk.setZaman();
> for(int i=0;i<1000000000;i++){}//for the times to be different


Don't do this, use an appropriate delay function.

Ian
 
Reply With Quote
 
berkay
Guest
Posts: n/a
 
      10-29-2005
yes s1 and s2 works well but if i want to make such a thing
strstreambuf bbuf(char*,int);
it only accepts a pointer and i have a string how can i do this i ll be
happy if u can help me

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
who do know std::ctime() how implement? Help me? wukexin C++ 1 05-25-2005 01:44 PM
ctime Help Kevin C++ 3 05-16-2004 04:09 PM
Undestanding proper ctime and clock() usage. Oplec C++ 2 10-25-2003 11:42 PM
Question about ctime Tivo Escobar C++ 1 07-23-2003 07:29 PM
replacement for <ctime>? Ernst Murnleitner C++ 8 07-20-2003 02:40 AM



Advertisments