要求:
提取的有效信息为 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; }