c# 读取txt文件中特定内容后的数据 5
da = 5 bb = 3 ce=4 等等
可以看出,是值对的形式,空格分隔,但是空格数量0或更多
然后我想直接读出其中的ce后面的值是多少,应该怎么写?
谢谢……
后面可能还有de = 9啊,什么的 展开
使用fopen,fscanf函数可以实现从txt文件当中读取内容,进行简单操作。
1.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
2.例程:
#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
char c;
int main(){
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp) return -1;//要返回错误代码
while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来
fclose(fp);
fp=NULL;//需要指向空,否则会指向原打开文件地址
return 0;
}
{
string str = "da = 5 bb = 3 ce=4";
for (int i = 0; i < str.Length; i++)
{
if (str[i] == 'e')
{
Console.WriteLine("ce后的数据为:");
for (int j = i + 1; j < str.Length; j++)
{ Console.Write(str[j]); }
}
}
}
你就不会把e改为de或者ce吗?
还有另外一段代码给你参考,希望你能举一反三,直接给出答案多没意思:
Console.WriteLine("请输入一个英文句子");
string s = Console.ReadLine();//读取数据
//把这个句子以“,”“。”“!”分隔开,存到数组里。
string[] word = s.Split(new char[]{',','?','.','!',' '});
//遍历数组里所有的元素
foreach(string str in word )
if(str!="")
{
Console.WriteLine(str );
}
命名空间:using System.Text.RegularExpressions;
代码:
string _buff = "da = 5 bb = 3 ce=4"; //这里模拟读入了文件的内容,_buff 要替换成 你从文本里面读取的字符串
Regex _reg = new Regex(@"[a-zA-Z_]\w*\s*=\s*(\d+(?!\.|x|e|d|m)u?)|^0x([\da-f]+(?!\.|x|m)u?)"); //定义正则表达式
MatchCollection mc = _reg.Matches(_buff); //匹配所有结果
Dictionary<string, int> _mydic = new Dictionary<string, int>(); //存放结果的dic
foreach (Match nObj in mc) //遍历所有结果
{
string _obj = nObj.Value;
_obj = _obj.Replace(" ","");
_mydic.Add(_obj.Split('=')[0], Convert.ToInt32(_obj.Split('=')[1]));
}
要想得到哪个的值就用 _mydic["变量名"] 比如想得到 da 的值 就是:
int test = _mydic["da"];
关键字设为ce啊