有如下代码,目的是读出文本文件中的字符串,后建立链表,但是读的第一个串总是不对,而后面的就对了,是什么原因,当再次调用此函数时,结果却面目全非
struct CFilelist *ReadFileName(CString &m_filelist)
{
CFilelist *p=NULL,*s=NULL,*pt=NULL;
FILE *fp1;
CString str=_T("");
//pt=new struct CFilelist;
if ((fp1=fopen(m_filelist,"r"))!=NULL)
{
while ( !feof(fp1))
{
if (pt == NULL)
{
fscanf(fp1,"%s",str);
pt=new struct CFilelist;
pt->fileName=new char[str.GetLength()+1];
strcpy(pt->fileName,str);
p=pt;
}
else
{
fscanf(fp1,"%s",str);
s=new struct CFilelist;
s->fileName=new char[str.GetLength()+1];
strcpy(s->fileName,str);
p->next=s;
p=s;
}
}
//pt=pt->next;
p->next=NULL;
fclose(fp1);
return pt;
}
else
{
AfxMessageBox("打开文件时出错!!!");
exit(0);
}
}
struct CFilelist *ReadFileName(CString &m_filelist)
{
CFilelist *p=NULL,*s=NULL,*pt=NULL;
FILE *fp1;
CString str=_T("");
//pt=new struct CFilelist;
if ((fp1=fopen(m_filelist,"r"))!=NULL)
{
while ( !feof(fp1))
{
if (pt == NULL)
{
fscanf(fp1,"%s",str);
pt=new struct CFilelist;
pt->fileName=new char[str.GetLength()+1];
strcpy(pt->fileName,str);
p=pt;
}
else
{
fscanf(fp1,"%s",str);
s=new struct CFilelist;
s->fileName=new char[str.GetLength()+1];
strcpy(s->fileName,str);
p->next=s;
p=s;
}
}
//pt=pt->next;
p->next=NULL;
fclose(fp1);
return pt;
}
else
{
AfxMessageBox("打开文件时出错!!!");
exit(0);
}
}
解决方案 »
- 关于读取不定宽度的字符串,然后转为数字
- cedit 的问题
- 双网卡取ip(重分请教)
- 请问写WIN32应用程序的时候,如何程序运行时候同时出现一个控制台窗口来输出?
- 为什么我把结构体里的数据转化成字符串,通过串口发送,当遇到0x00,收到的数据就停止了,我该怎么解决这个问题?谢谢
- 多媒体开发:因项目需求,需要开发一个媒体播放控件,请大家多给些思路.(高分送出,不够可加)
- 一个数组在单文档客户区内输出的问题,不能换行怎么办?
- 请大家帮我看一看这个程序。 在线等侯! 第一时间给出答案者一定给分!
- 怎样对HDC属性进行初始化?
- 一个很菜的人问的很菜的问题
- 请问怎样打开bda及hed文件,谢谢!
- 关于文件属性的几个疑问,
{
fscanf(fp1,"%s",str);
s=new struct CFilelist;
s->fileName=new char[str.GetLength()+1];
strcpy(s->fileName,str);
p->next=s;
p=s;//有问题,应该去掉
}
//你每次都在换链表的头