Re: [问题] C++ 读取txt档后,取出需要的值后储存

楼主: yyan1218 (今天下雨了吗)   2014-12-05 22:17:00
※ 引述《lettuce (lettuce)》之铭言:
: 开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++
: 额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
: 问题(Question):
: 各位先进们好,小弟有一笔资料如下,需要跳过!后的字串与数字,只取最下面数值的部分
: 并储存成阵列,请问该怎么做?谢谢
: 喂入的资料(Input):
: !File:abc
: !I:123
: !V:456
: !R:0.123
: 0.123 0.456 0.789 0.124 0.125
: 0.321 0.123 0.213 0.312 0.456
: 0.123 0.454 0.577 0.231 0.213
: 预期的正确结果(Expected Output):
: 0.123 0.456 0.789 0.124 0.125
: 0.321 0.123 0.213 0.312 0.456
: 0.123 0.454 0.577 0.231 0.213
: 错误结果(Wrong Output):
: 程式码(Code):(请善用置底文网页, 记得排版)
: 补充说明(Supplement):
小弟也是菜鸟
可能方法不是最好,还请其他大大赐教
#include "stdio.h"
#include "stdlib.h" //system函数
#include "string.h"
#define MAXCOL 3
#define MAXROW 5
void main()
{
char S1[1024]="";
double Array[MAXCOL][MAXROW]={0}; //阵列大小
int col=0,row=0;
while(col<MAXCOL)
{
scanf(" %[^\r\n]",S1);//抓取一行
//前面空白很重要,没有的话不能一直抓取
if(S1[0]=='!')
continue;//忽略此行
else
{
//侦测空白键分割字串
row=0;
char *s1=strtok(S1," ");
while(row <MAXROW && s1)
{
Array[col][row]=atof(s1);
row++;
s1=strtok(NULL," ");
}
col++;
}
}
//打印阵列
for(col=0;col<MAXCOL;col++)
{
for(row=0;row<MAXROW;row++)
{
printf("%.3f ",Array[col][row]);
}
printf("\r\n");
}
system("pause");
}
以上应该可以印出你要的答案0.0
阵列资料何时要停止收集,我设定是阵列存满后跳出。
如果不想要用scanf 可以用看看 c++ std:cout cin
看个人觉得哪个好用 就用哪个
作者: bibo9901 (function(){})()   2014-12-06 00:24:00
你的 column 和 row 跟一般的定义不太一样 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com