LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 977|回复: 7

如何读取一个文件中的指定字符串

[复制链接]
发表于 2004-1-11 20:50:24 | 显示全部楼层 |阅读模式
用read可以读取文件,但怎么读取里面的指定的某些字符?
发表于 2004-1-11 21:50:01 | 显示全部楼层
如果知道这个字符串在文件中的位置的话,可以先把指针移过去,然后再读;
如果不知道的话,就从文件开头开始读,然后检查是不是你所想要的
发表于 2004-1-11 22:14:58 | 显示全部楼层
可以把文件读入缓冲,然后在缓冲中搜索。
发表于 2004-1-11 22:18:28 | 显示全部楼层
怎么GET到特定字符打后的几个字符呢??:ask :help :help
发表于 2004-1-11 22:21:02 | 显示全部楼层
最初由 kj501 发表
可以把文件读入缓冲,然后在缓冲中搜索。


用fgetc() ?
发表于 2004-1-11 22:47:02 | 显示全部楼层
一般情况下文件只能顺序读,读入内存以后再进行处理,也可以用fseek之类的,不过你要知道要读取的内容在文件中的位置才行,对于文本文件(你要读字符串,估计是文本文件)一般没什么好办法。
如果用mmap也可以,读入内存简单一点,不过处理还是得自己做。
发表于 2004-4-7 17:14:47 | 显示全部楼层
example :
seek at /etc/issue

  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <fcntl.h>
  4. int
  5. main(void)
  6. {
  7.     int         fd,i;
  8.     char        buffer[80];
  9.     if((fd=open("/etc/issue",O_RDONLY))<0) {
  10.            printf("open error\n");
  11.            return(1);
  12.     }
  13.     if(read(fd,buffer,80) >0) {
  14.            for(i=0;i<strlen(buffer);i++)
  15.            if( buffer[i] == 'n' && buffer[i+1] == 'e' && buffer[i+2] == 'l' )
  16.                       printf(" at %d\n",i);
  17.     } else {
  18.            printf(" read error\n");
  19.            return(1);
  20.     }
  21.     close(fd);
  22.     return(0);
  23. }
复制代码
发表于 2004-4-7 17:16:49 | 显示全部楼层
调用read()如果分配的 buffer不够大,会一切正常。-----和主题没有关系。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表