如何在C# 逐行读取txt数据,按照下列格式

9.1021.9013.007.3019.4016.0015.1017.6010.0017.8014.2017.0020.7017.0019.0024.1018.3013... 9.10 21.90 13.00
7.30 19.40 16.00
15.10 17.60 10.00
17.80 14.20 17.00
20.70 17.00 19.00
24.10 18.30 13.00
3.60 22.90 19.00
。。。。。(类似的)

要求第一和第二列存进一个二维数组,第三列单独存进一个一维数组,求大神解答!!
展开
 我来答
百度网友01136f8
2013-05-15 · TA获得超过906个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:187万
展开全部
楼主你好~

考虑到数据间空格数不一定,数据小数位数不一定,数据最后符号不一定,有漏数据可能性等因素,建议采用正则表达式来匹配,代码如下:

// 程序最顶部添加名词空间
using System.Text.RegularExpressions;
using System.IO;

...

float[,] arr1;
float[] arr2;
void MyFun()
{
// 自行修改文件位置

  string[] lines = File.ReadLines(@"C:\a.txt").ToArray<string>();
  List<float> column1 = new List<float>();
  List<float> column2 = new List<float>();
  List<float> column3 = new List<float>();
// 正则\d+\.\d+匹配一个不限位数的小数
  Regex reg = new Regex(@"\d+\.\d+");
  foreach (string line in lines)
  {
   if (reg.Matches(line).Count == 3)
  {
  MatchCollection mc = reg.Matches(line);
  column1.Add(float.Parse(mc[0].Value));
  column2.Add(float.Parse(mc[1].Value));
  column3.Add(float.Parse(mc[2].Value));
  };
  }
  arr2 = column3.ToArray();
  arr1 = new float[arr2.Length, 2];
  for (int i = 0; i < arr2.Length; i++)
  {
  arr1[i, 0] = column1[i];
  arr1[i, 1] = column2[i];
  }
}

请追问~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-08-05 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:898万
展开全部

1.用fgets函数可以读取文件中某行的数据,某列数据就必须一个一个读入每行的第几个字符,再存入到一个字符串当中。

2.例程:

#include<stdio.h>
#include<string.h>
void main()
{
  char a[100],b[100],c[100];
  int i=3,j=4,k=0;    //第三行,第四列
  FILE *fp = fopen("data.txt","r");
  while(fgets(c,100,fp)){    //读入每行数据
    i--;
    if(i==0) strcpy(a,c);    //读到第三行数据
    b[k++]=c[j-1];        //把每行的那列字符拷到b中
  }
  b[k]=0;
  printf("第%d行数据:%s\n",i,a);
  printf("第%d列数据:%s\n",j,b);
  fclose(fp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
noisu
2013-05-15
知道答主
回答量:7
采纳率:0%
帮助的人:6.4万
展开全部
List<string[]> one = new List<string[]>();
string[] oneTemp;
List<string> two=new List<string>();
string[] array;
string line;
using (StreamReader sr = new StreamReader("C:\\aa.txt"))
{
while((line=sr.ReadLine())!=null)
{
array = line.Trim().Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
if (array.Length >= 3)
{
oneTemp = new string[2];
oneTemp[0] = array[0];
oneTemp[1] = array[1];
one.Add(oneTemp);
two.Add(array[2]);
}
}
sr.Close();
}
string[][] end1 = one.ToArray();//第一,第二列
string[] end2 = two.ToArray(); //第三列
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
游俊龙
2013-05-15 · TA获得超过279个赞
知道小有建树答主
回答量:372
采纳率:0%
帮助的人:193万
展开全部
string[] lines = File.ReadAllLines(filename);//filename为文件所在路径
double[,] arr1 = new double[2, lines.Length];
double[] arr2 = new double[lines.Length];
for (int i = 0; i < lines.Length; i++)
{
string[] numarr = lines[i].Split(' ');
arr1[0, i] = Convert.ToDouble(numarr[0]);
arr1[1, i] = Convert.ToDouble(numarr[1]);
arr2[i] = Convert.ToDouble(numarr[2]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
纵横家_
2013-05-15 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:123万
展开全部
a[3[2]={9.10 ,21.90},{7.30,19.40},{15.10,17.60};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式