求助!VC读取TXT文件中数据的问题|也算是CSTRING切割问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:35:02
我打开TXT并把里面的内容读到一个CSTRING后怎么把里面的数据放入我自定义的STRUCT DATA(CSTRING ID;FLOAT NUM)里?
文本的内容格式为:
ID1,NUM1
ID2,NUM2
……

其实这个可以算是CSTRING切割问题~~~~
请高手能给小弟讲讲怎么做比较啊~我是用CFILE读文件的,如果用其他方式更为方便的话也请说说~
数据是要放入vector<data> member中,而且数据中的ID有可能是汉字!

这个问题不需预先知道文档的行数,如果一定要知道的话,
有一个笨办法,那就是将文档从头到尾读一遍,记下换行符
的个数,就是它的行数(如果换行符不是最后一个话,
需要加1)。

代码如下:

//求指定文件的行数
int line_count(char* path)
{
FILE *f=fopen(path,"r");
int count=0;//行数计数器
char c;
int flag;//标志
for(flag=fscanf(f,"%c",&c);flag!=EOF && flag>0;flag=fscanf(f,"%c",&c))
{
if(c=='\n')count++;
}
if(c!='\n')count++;
fclose(f);

return count;
}

对于这个问题,你可以采用逐个读取字符,
空格之前的字符写入文件1,换行符之前的字符写入文件2,
这样自然也就将它分成了你要求的两个文档

代码如下:

//将文件path中的内容分为两部分,分别存入outFile1,outFile2,并返回文件path的行数
int split(char* path, char* outFile1,char* outFile2)
{
FILE *r=fopen(path,"r");//输入文件
FILE *w1=fopen(outFile1,"w");//输出文件1
FILE *w2=fopen(outFile2,"w");//输出文件2

if(r==NULL || w1==NULL || w2==NULL)
{
//打开文件失败,