By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,905 Members | 1,265 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,905 IT Pros & Developers. It's quick & easy.

ctime

P: n/a
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?

Oct 29 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
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

Oct 29 '05 #2

P: n/a
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();


}

Oct 29 '05 #3

P: n/a
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

Oct 29 '05 #4

P: n/a
Ian
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
Oct 29 '05 #5

P: n/a
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

Oct 29 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.