同样一个数组为什么分开输出,和一个一个输出的结果咋不一样,该如何处理

同样一个数组为什么分开输出,和一个一个输出的结果咋不一样
#include<iostream>
#include<ctime>
#include<windows.h>

using namespace std;
void main()
{char *arr[10];
time_t t;
t=time(NULL);
int y;
for(int i=0;i<4;i++)
{
cin>>y;
time_t t;
t=time(NULL);

arr[i]=ctime(&t);
cout<<arr[i];

}
for(int i=0;i<4;i++)
{
cout<<arr[i];
}
}
各位大侠看一下,同样arr[i]为什么输出的结果不一样

------解决方案--------------------
输出样的结果,都是一样的吧,运行了一下
------解决方案--------------------
ctime应该是用一个静态字符数组容纳时间文本的,所以每次你得到的返回值都是指向同一个位置的指针。

这样在分别输出的时候你看到的是每一次转换出的时间值,而最后一次显示时因为它们都指向同一个位置,而该位置存放的是最后的转换字符串,你看到的就都是最后的那个串。

要改变这个问题你要分别为每个值申请一个存储空间,然后用strcpy将ctime的返回串拷贝进去,并将串首指针存放到你的arr里。
------解决方案--------------------
C/C++ code
#include<iostream>
#include<ctime>
#include<windows.h>

using namespace std;
void main()
{
    char *arr[10],*p;
    time_t t;
    t=time(NULL);
    int y;
    for(int i=0;i<4;i++)
    {
        cin>>y;
        time_t t;
        t=time(NULL);
        p=new char[20];
        strcpy(p,ctime(&t));
        arr[i]=p;
        cout<<arr[i];
    }
    cout<<endl;
    for(int i=0;i<4;i++)
    {
        cout<<arr[i];
    }
}

------解决方案--------------------
???我又反复试验了几次,没发现有什么问题。难道是你粘贴的时候没把原来的东西清理干净?
------解决方案--------------------
没有QQ。输入一个数字按一次回车,别按多了。