问个TC++的简单问题,请指教

ftway 2003-02-11 11:28:29
#include <stdio.h>
#include <dir.h>
#include <fstream.h>
#include <string.h>
struct FileInfo
{
char *name;
};
void main(void)
{
struct ffblk ffblk;
ofstream oo("1.txt");
int done;
//setdisk(3);
printf("Directory listing of *.*\n");
done = findfirst("*.*",&ffblk,0);
int filenum=0;
while (!done)
{
filenum++;
done = findnext(&ffblk);
}
cout<<filenum<<" file(s) found"<<endl;
FileInfo* cdinfo=new FileInfo [filenum];
done = findfirst("*.*",&ffblk,0);
for(int i=0;!done;i++)
{
cdinfo[i].name=ffblk.ff_name;
cout<<"cdinfo["<<i<<"] "<<cdinfo[i].name<<endl;// why this cout correct
done = findnext(&ffblk);
}
for(i=0;i<filenum;i++)
{
cout<<"cdinfo["<<i<<"] "<<cdinfo[i].name<<endl;//but this is wrong

}
delete[]cdinfo;
}
这段代码,为什么我的机器上前面的cout输出的是正确的,而后面的输出却全部是
cdinfo数组的最后一个元素?

小弟菜鸟,分数也不多,请知道的告诉我答案,谢谢了!
...全文
57 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
7rainbow 2003-02-12
  • 打赏
  • 举报
回复
你的count是不错的,错在你用的针不对。
1.cdinfo[i].name 是一个指针,它指向的ffblk.ff_name是的变化的,所以,cdinfo[i].name也是变化的,

你可以这样写:
struct FileInfo
{
char name[80];
};

strcpy(cdinfo[i].name,ffblk.ff_name);




ftway 2003-02-12
  • 打赏
  • 举报
回复
呵呵,知道了,谢谢了。原来这么简单啊,呵呵。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧