ctime

B

berkay

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

Jonathan Mcdougall

berkay said:
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
 
B

berkay

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())<<endl;

}

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();




}
 
J

Jonathan Mcdougall

berkay said:
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())<<endl;

}

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;
}

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
 
B

berkay

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top