当前位置: 技术问答>linux和unix
LINUX/SOLARIS环境查找字符串的问题,工作急需,再次恳求各位高手帮忙!!!!
来源: 互联网 发布时间:2015-08-04
本文导语: 在LINUX/SOLARIS环境下查找字符串的问题,用户输入文件路径,和需要查找的字符串,如:fileaddr="/usr/zeus/a.txt" objstr="pig"。 返回特定字符串出现的次数和文件末尾的位置,以便下次查找时从这个位置继续往下找。 ...
在LINUX/SOLARIS环境下查找字符串的问题,用户输入文件路径,和需要查找的字符串,如:fileaddr="/usr/zeus/a.txt" objstr="pig"。
返回特定字符串出现的次数和文件末尾的位置,以便下次查找时从这个位置继续往下找。
使用C/C++均可,能实现功能就行。使用g++编译
1.我写了个草稿,行首有***的地方是在文件中查找字符串,不知道用什么函数,怎么写了。
2.还有就是字符串string类型可以用吧(包含了string.h)
3.这个程序段要嵌到一个已写好的程序里,需要在linux和solaris下运行,我就怕不支持,不过都是gun c编译
请指教!!
#include "stdio.h"
#include "string.h"
int find_in_file(long * pos,string *fileaddr,string *objstr)
{
FILE *fp;
int time=0;
if((fp=fopen(*fileaddr,"r"))==NULL){
printf("file %s cannot be openedn",fileaddr);
return -1;
}
printf("n a.txt contents are :n");
// If is not a new moniter file,goto the last postion.
if (objstr != 0) fseek(fp,*pos,0);
*** while(fgetc(fp)!=EOF){ //未到文件结尾,继续查找
*** if fp.finded(*objstr) time=time+1 //在当前文件继续向下查找
}
*pos=ftell(fp)
fclose(fp);
return time
}
返回特定字符串出现的次数和文件末尾的位置,以便下次查找时从这个位置继续往下找。
使用C/C++均可,能实现功能就行。使用g++编译
1.我写了个草稿,行首有***的地方是在文件中查找字符串,不知道用什么函数,怎么写了。
2.还有就是字符串string类型可以用吧(包含了string.h)
3.这个程序段要嵌到一个已写好的程序里,需要在linux和solaris下运行,我就怕不支持,不过都是gun c编译
请指教!!
#include "stdio.h"
#include "string.h"
int find_in_file(long * pos,string *fileaddr,string *objstr)
{
FILE *fp;
int time=0;
if((fp=fopen(*fileaddr,"r"))==NULL){
printf("file %s cannot be openedn",fileaddr);
return -1;
}
printf("n a.txt contents are :n");
// If is not a new moniter file,goto the last postion.
if (objstr != 0) fseek(fp,*pos,0);
*** while(fgetc(fp)!=EOF){ //未到文件结尾,继续查找
*** if fp.finded(*objstr) time=time+1 //在当前文件继续向下查找
}
*pos=ftell(fp)
fclose(fp);
return time
}
|
把文件内容存到一个字符串buf,再用strstr函数查找字符串buf中的子串"pig"就可以了
|
你直接用Magic C++服务器端的源代码就可以了,里面有字符串搜索的src
http://www.magicunix.com
http://www.magicunix.com
|
你的程序是标准c程序,所以在linux和solaris下用gcc编译应该是不需要改动的。