文本读数据

namewchwch 2009-07-29 09:06:38
在文本文件中的数据如下 分成三组。第一组数据包含3列(1-3列)(若不足三列则以空格补充)(148,23)
第二组数据包含4列(8-11列,第一第二组之间空了5列)(1300,100)
第三组数据是浮点数 除小数点外包含4列(13-16列)(2.600,1.30)
148 1300 2.600
23 100 1.30
.........................


现在想用三个数组分别把这三组数据读取出来 应该怎么做?
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
周成风 2009-07-30
  • 打赏
  • 举报
回复
给楼主一个我用了很久的函数,非常方便。

int AnalyzeOneLine(char* buf,int* a)
{
//参数一、传人的字符串
//参数二、int * 数组保存的是字串的个数a[0]为第一个字串的开始位,a[1]为第二个字串的开始位
//返回值为一行中字符串的个数
int count=0;
BOOL bSpace=TRUE;
int length=int(strlen(buf)); //得到字符串长度
for(int i=0;i<length;i++) //对所有字符进行循环
{
if(bSpace && buf[i]!=' ' && buf[i]!='\t') //字符不是空格和TAB键
{
a[count]=i;
count++;
bSpace=FALSE;
}
else if(!bSpace &&(buf[i]==' ' || buf[i]=='\t'))
{
buf[i]='\0';
bSpace=TRUE;
}
}
return count;
}

//使用过程
char buf[500]; //保存一行的字符串
int a[20]; //保存每个字串的位置,最多可以保存个
CString strLine; //读取的一行数据
CString Name1,Name2,Name3,Name4;

strcpy(buf,strLine.GetBuffer(strLine.GetLength()));
AnalyzeOneLine(buf,a); //调用处理函数
Name1=buf+a[1]; //第二个字符串
Name2=buf+a[2]; //第三个字符串
Name3=buf+a[3]; //第四个字符串

goldwanglei 2009-07-29
  • 打赏
  • 举报
回复
如果能固定,每个数之间用一个空格,寻找空格就可以快速定位了
rcswhuang 2009-07-29
  • 打赏
  • 举报
回复
这个很简单啊。
用CStidoFile类来读
CStidoFile file;
file.open("c:\\xx.txt",只读模式);//
CString str;
while(file.readstring(str))
{
//在这里实现读取
//由于每个字段的个数都固定好了,就用str.Mid的方式来读各个字段 分别保存起来就可以啦
}//循环读取
baggio1984 2009-07-29
  • 打赏
  • 举报
回复
fscanf(fp, "%d%d%f", );
Conry 2009-07-29
  • 打赏
  • 举报
回复
读一行分析一行,因为你的这个列是固定的,应该更好分割了

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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