首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-05-09 
同样一个数组为什么分开输出,和一个一个输出的结果咋不一样#includeiostream#includectime#includewi

同样一个数组为什么分开输出,和一个一个输出的结果咋不一样
#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。输入一个数字按一次回车,别按多了。

热点排行