疑惑:记录集存为CSV文件

lo0P 2003-08-18 06:07:42
一位CSDn的朋友写的一段代码,我感觉有些问题

bool SaveToFile(const char *FileName,TDataSet *DataSet)
//CSV OutPut
//TXT_FixSeparator::
{
FILE *fstream = fopen(FileName,"w");
int i,count ;
char *s ; //疑惑,不分配内存,直接用指针就可以?



if(!fstream) return false;
count = (DataSet->FieldCount < FieldCount)?DataSet->FieldCount:FieldCount ;
DataSet->DisableControls();
for(DataSet->First();!DataSet->Eof;DataSet->Next())
{
s = StrECopy(buff,DataSet->Fields->Fields[0]->Text.c_str());//buff为何物,全局变量?




//用StrECopy要比+操作符快。
for(i = 1 ; i < count; ++i)
{
*s++ = separator ; //default separator = '0x09' ;//TAB分隔符。
s = StrECopy(s,DataSet->Fields->Fields[i]->Text.c_str());
}
fputs(buff,fstream);
}
DataSet->EnableControls();
fclose(fstream);
return true;
}
怎样才好用呢?
...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-20
  • 打赏
  • 举报
回复
SaveToFile("c:\\test.csv",table1,100)我是举个例子

多次调用fputs(buff,fstream)到达windows的内部磁盘缓冲就写盘
全部由windows控制,你无须考虑,这样一来速度不会比较慢

lo0P 2003-08-20
  • 打赏
  • 举报
回复
fputs(buff,fstream);//是否已经将数据写盘
还是在fclose(fstream);时才写盘

如果fputs(buff,fstream);就有写盘操作,那么不是比较慢(循环中有磁盘操作)

SaveToFile("c:\\test.csv",table1,100);是不是多余?


zjqyb 2003-08-18
  • 打赏
  • 举报
回复
char separator=',';
char buff[2048];
bool SaveToFile(const char *FileName,TDataSet *DataSet,int FieldCount)
{
FILE *fstream = fopen(FileName,"w");
int i,count ;
char *s ; //不需分配内存,直接用指针就可以?
if(!fstream)
return false;
count = (DataSet->FieldCount < FieldCount)?DataSet->FieldCount:FieldCount ;
DataSet->DisableControls();
for(DataSet->First();!DataSet->Eof;DataSet->Next())
{
memset(buff,0,sizeof(buff));
s = StrECopy(buff,DataSet->Fields->Fields[0]->Text.c_str());//buff为全局变量?
for(i = 1 ; i < count; ++i)
{
*s++ = separator ; //csv default separator = ','
s = StrECopy(s,DataSet->Fields->Fields[i]->Text.c_str());
}
*s='\n'; //增加换行
fputs(buff,fstream);
}
DataSet->EnableControls();
fclose(fstream);
return true;
}
//example:

SaveToFile("c:\\test.csv",table1,100);

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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