Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   ctime (http://www.velocityreviews.com/forums/t449426-ctime.html)

berkay 10-29-2005 12:24 AM

ctime
 
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?


Jonathan Mcdougall 10-29-2005 12:37 AM

Re: ctime
 
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


berkay 10-29-2005 01:08 AM

Re: ctime
 
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();




}


Jonathan Mcdougall 10-29-2005 01:46 AM

Re: ctime
 
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


Ian 10-29-2005 01:52 AM

Re: ctime
 
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

berkay 10-29-2005 12:11 PM

Re: ctime
 
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



All times are GMT. The time now is 08:26 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.