从文本内容中提取有效信息

  • Post author:
  • Post category:其他




例如a.txt中有如下内容



$ABC,eqwe,0123,N,we23,E,234



$ABD,fkjd,2454,N,fwer,E,456



$AB,fhew,9478,N,wewf,E,rnju



$ABC,wefn,9834,N,riwqj,E,42


要求:


提取的有效信息为


eqwe,0123,we23
wefn,9834,riwqj

代码实现:


#include<stdio.h>

#include<string.h>

#include<fcntl.h>

#include<unistd.h>

#include<sys/types.h>

int


i=0;


//存放信息时使用

int


main(){




int


fd=open(


"a.txt"


,O_RDONLY,0644);




char


c;


//取出每一个字符



ssize_t bytes;



char


xinxi[256];


//存放提取信息



if


(fd==-1)



{




perror


(


"open"


);



return


-1;



}



//不断的读



while


(bytes=(read(fd,&c,


sizeof


(c)))>0)



{




if


(c==


'$'


)



{



//文件位置向后移动一位



read(fd,&c,


sizeof


(c));



if


(c==


'A'


)



{




read(fd,&c,


sizeof


(c));



if


(c==


'B'


)



{




read(fd,&c,


sizeof


(c));



if


(c==


'C'


)



{




read(fd,&c,


sizeof


(c));


//指针移到逗号前



read(fd,&c,


sizeof


(c));


//



if


(c!=


','


){




while


(c!=


'N'


)


//提取信息



{




{xinxi[i]=c;


//将有用字符存入数组



++i;



read(fd,&c,


sizeof


(c));}



}



read(fd,&c,


sizeof


(c));


//



if


(c!=


','


)



continue


;}



}



else



{




while


(c!=


'\n'


)



read(fd,&c,


sizeof


(c));



continue


;


//跳出while循环,并开始读取信息



}



}



}



}



else


if


(c!=


'E'


&&c!=


','


)



{




xinxi[i]=c;



++i;



}



else


{




while


(c!=


'\n'


)



read(fd,&c,


sizeof


(c));



continue


;}



}


//成功读取后的操作



if


(bytes==-1)



{




perror


(


"read"


);



return


-1;



}



int


m;



for


(m=0;xinxi[m];++m)



printf


(


"%c"


,xinxi[m]);



printf


(


"\n"


);




return


0;



}



版权声明:本文为lws123253原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。