从文本读出些数据,要把他们转化成数组放进二维数组应该怎么做?

时间:2021-05-04 17:42:34
文本数据如下:
1 2 3 2 1 2 3 2 1 2
1 2 2 5 4 1 2 5 3 5
1 4 1 4 1 1 4 7 5 4.1
现在读出后转化成float然后放进二维数组该怎么做啊?用MFC谢谢 到时候给分!~~

23 个解决方案

#1


大小不确定吗?
那得先确定大小
csdtiofile
readstring()得到一行字符串,然后过滤,得到
反复readstring得到行数
然后动态分配
最后字符串操作,把一个个数字提取出来

好像我的方法不够好

#2


strtok, atof

#3


刚刚写了一个

float Number[256][256];

HANDLE hPltFile = NULL;

DWORD Length = 0;

DWORD HighLength;

DWORD ReadNum = 0;

int i=0;

int j=0;

char* Readed;

char* TmpRead;

hPltFile = ::CreateFile(szFileName,
GENERIC_READ, 
FILE_SHARE_READ, 
NULL,
OPEN_EXISTING, 
FILE_ATTRIBUTE_READONLY, 
NULL);

Length = GetFileSize(hPltFile, &HighLength);

char* pBuff = new char[Length+1];

memset(pBuff, 0, Length+1);

if(!::ReadFile(hPltFile, pBuff, Length, &ReadNum, NULL))
{
return 0;
}

CloseHandle(hPltFile);

pBuff[Length] = '\0';

TmpRead = Readed;

while ((*Readed)!='\0')
{

        if((*Readed>'0'&&*Readed<'9')||*Readed=='.')
               *Readed++;
        else if(*Readed==0x20)
        {
            *Readed = '\0';

            Number[i][j] = atof(TmpRead);
            
            j++;

            while(*Readed<'0'||*Readed>'9')
            {    
               Readed++;
            }

            TmpRead = Readed;
        }
        else if(*Readed==0x0a || *Readed==0x0d)
        {
            *Readed = '\0';

            Number[i][j] = atof(TmpRead);
            
            i++;

            while(*Readed<'0'||*Readed>'9')
            {    
               Readed++;
            }

            TmpRead = Readed;
         }
        else 
            Readed++;
}

#4


ls的代码很强大...
赞个..

#5


    参考我写的一篇文章:http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#6


    参考我写的一篇文章:http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#7


  参考我的一篇文章:

http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#8


怎么加分啊,郁闷  想给各位都加点分还不知道怎么加!
读文本到二维数组的问题还是优点迷糊,大家继续关注下子撒,等知道加分了自然补上

#9


加分都不会?看到现在这个页面,最后一条留言,在留言左下方,3个按钮,中间那个,“管理帖子”,按下,给分,然后按“结帖”。
PS:结帖要再输入一次密码

#10


可是我还不想结帖呢,只是想让高手看在分数的面子上再帮帮我!
问题还么解决啊! 

#11


我也遇到类似问题
期待...

#12


快结帖了,高手可以再给些意见!偶会酌情给分的

#13


你要什么意见?

#14


比如把二维数组中的数据向EXCEL填写的时候用什么函数或方法比较好?
具体可以给点代码撒

#15


你自己试一下,通过excel现有工具把文本导入
应该可以成功
接着在网上搜有关excel ado 导入的

#16


直接打开一个xls文件写进去

1.0 \t 1.1 \t 1.2 \r\n
2.0 \t 2.1 \t 2.2 

#17


EXCEL我已经建立起来了,用COM弄的
现在就差如何把二维数组给放进EXCEL了  这个不会!

#18


先打开一个txt先把下面的写进去,完了后缀再改成xls

1.0   \t   1.1   \t   1.2   \r\n 
2.0   \t   2.1   \t   2.2   

#19


这方法我倒没用过,不过我现在直接想往现成做好的EXCEL写入,不知道该怎么办

#20


ls高手
又学习了

#21


说错了,18楼

#22


这是我建立EXCEL的代码,高手可以看下,想在红色地方填写代码,好象很麻烦的,试了几次都不行

_Application ExcelApp; 
Workbooks wbsMyBooks; 
_Workbook wbMyBook; 
Worksheets wssMysheets; 
_Worksheet wsMysheet; 
Range rgMyRge; 
//创建Excel 2000服务器(启动Excel) 

if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
exit(1); 

//利用模板文件建立新文档 
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g:\exceltest\MyTemplate.xlt"))); 
//得到Worksheets 
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); 
//得到sheet1 
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); 
//得到全部Cells,此时,rgMyRge是cells的集合 
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); 
//设置1行1列的单元的值 
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!")); 

//得到所有的列 
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true); 
//得到第一列 
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true); 
//设置列宽 
rgMyRge.SetColumnWidth(_variant_t((long)200)); 
//调用模板中预先存放的宏 
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); 
//打印预览 
wbMyBook.SetSaved(true); 
ExcelApp.SetVisible(true); 
wbMyBook.PrintPreview(_variant_t(false)); 
//释放对象 
rgMyRge.ReleaseDispatch(); 
wsMysheet.ReleaseDispatch(); 
wssMysheets.ReleaseDispatch(); 
wbMyBook.ReleaseDispatch(); 
wbsMyBooks.ReleaseDispatch(); 
ExcelApp.ReleaseDispatch(); 
}

#23


大家有这方面的资料的话也可以发给我撒,xiaofan_xj@163.com
分不够了再加!

#1


大小不确定吗?
那得先确定大小
csdtiofile
readstring()得到一行字符串,然后过滤,得到
反复readstring得到行数
然后动态分配
最后字符串操作,把一个个数字提取出来

好像我的方法不够好

#2


strtok, atof

#3


刚刚写了一个

float Number[256][256];

HANDLE hPltFile = NULL;

DWORD Length = 0;

DWORD HighLength;

DWORD ReadNum = 0;

int i=0;

int j=0;

char* Readed;

char* TmpRead;

hPltFile = ::CreateFile(szFileName,
GENERIC_READ, 
FILE_SHARE_READ, 
NULL,
OPEN_EXISTING, 
FILE_ATTRIBUTE_READONLY, 
NULL);

Length = GetFileSize(hPltFile, &HighLength);

char* pBuff = new char[Length+1];

memset(pBuff, 0, Length+1);

if(!::ReadFile(hPltFile, pBuff, Length, &ReadNum, NULL))
{
return 0;
}

CloseHandle(hPltFile);

pBuff[Length] = '\0';

TmpRead = Readed;

while ((*Readed)!='\0')
{

        if((*Readed>'0'&&*Readed<'9')||*Readed=='.')
               *Readed++;
        else if(*Readed==0x20)
        {
            *Readed = '\0';

            Number[i][j] = atof(TmpRead);
            
            j++;

            while(*Readed<'0'||*Readed>'9')
            {    
               Readed++;
            }

            TmpRead = Readed;
        }
        else if(*Readed==0x0a || *Readed==0x0d)
        {
            *Readed = '\0';

            Number[i][j] = atof(TmpRead);
            
            i++;

            while(*Readed<'0'||*Readed>'9')
            {    
               Readed++;
            }

            TmpRead = Readed;
         }
        else 
            Readed++;
}

#4


ls的代码很强大...
赞个..

#5


    参考我写的一篇文章:http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#6


    参考我写的一篇文章:http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#7


  参考我的一篇文章:

http://blog.csdn.net/clever101/archive/2006/05/22/749170.aspx

#8


怎么加分啊,郁闷  想给各位都加点分还不知道怎么加!
读文本到二维数组的问题还是优点迷糊,大家继续关注下子撒,等知道加分了自然补上

#9


加分都不会?看到现在这个页面,最后一条留言,在留言左下方,3个按钮,中间那个,“管理帖子”,按下,给分,然后按“结帖”。
PS:结帖要再输入一次密码

#10


可是我还不想结帖呢,只是想让高手看在分数的面子上再帮帮我!
问题还么解决啊! 

#11


我也遇到类似问题
期待...

#12


快结帖了,高手可以再给些意见!偶会酌情给分的

#13


你要什么意见?

#14


比如把二维数组中的数据向EXCEL填写的时候用什么函数或方法比较好?
具体可以给点代码撒

#15


你自己试一下,通过excel现有工具把文本导入
应该可以成功
接着在网上搜有关excel ado 导入的

#16


直接打开一个xls文件写进去

1.0 \t 1.1 \t 1.2 \r\n
2.0 \t 2.1 \t 2.2 

#17


EXCEL我已经建立起来了,用COM弄的
现在就差如何把二维数组给放进EXCEL了  这个不会!

#18


先打开一个txt先把下面的写进去,完了后缀再改成xls

1.0   \t   1.1   \t   1.2   \r\n 
2.0   \t   2.1   \t   2.2   

#19


这方法我倒没用过,不过我现在直接想往现成做好的EXCEL写入,不知道该怎么办

#20


ls高手
又学习了

#21


说错了,18楼

#22


这是我建立EXCEL的代码,高手可以看下,想在红色地方填写代码,好象很麻烦的,试了几次都不行

_Application ExcelApp; 
Workbooks wbsMyBooks; 
_Workbook wbMyBook; 
Worksheets wssMysheets; 
_Worksheet wsMysheet; 
Range rgMyRge; 
//创建Excel 2000服务器(启动Excel) 

if (!ExcelApp.CreateDispatch("Excel.Application",NULL)) 

AfxMessageBox("创建Excel服务失败!"); 
exit(1); 

//利用模板文件建立新文档 
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true); 
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g:\exceltest\MyTemplate.xlt"))); 
//得到Worksheets 
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true); 
//得到sheet1 
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true); 
//得到全部Cells,此时,rgMyRge是cells的集合 
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true); 
//设置1行1列的单元的值 
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!")); 

//得到所有的列 
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true); 
//得到第一列 
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true); 
//设置列宽 
rgMyRge.SetColumnWidth(_variant_t((long)200)); 
//调用模板中预先存放的宏 
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing, 
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing); 
//打印预览 
wbMyBook.SetSaved(true); 
ExcelApp.SetVisible(true); 
wbMyBook.PrintPreview(_variant_t(false)); 
//释放对象 
rgMyRge.ReleaseDispatch(); 
wsMysheet.ReleaseDispatch(); 
wssMysheets.ReleaseDispatch(); 
wbMyBook.ReleaseDispatch(); 
wbsMyBooks.ReleaseDispatch(); 
ExcelApp.ReleaseDispatch(); 
}

#23


大家有这方面的资料的话也可以发给我撒,xiaofan_xj@163.com
分不够了再加!