C:在文件中搜索字符串

C:在文件中搜索字符串,第1张

概述如果我有: const char *mystr = "cheesecakes";FILE *myfile = fopen("path/to/file.exe","r"); 我需要编写一个函数来确定myfile是否包含任何mystr的出现.谁能帮助我?谢谢! 更新:事实证明我需要部署的平台没有memstr.有谁知道我可以在我的代码中使用的免费实现? 如果您无法将整个文件放入内存,并且您可以访问GN 如果我有:

const char *mystr = "cheesecakes";file *myfile = fopen("path/to/file.exe","r");

我需要编写一个函数来确定myfile是否包含任何mystr的出现.谁能帮助我?谢谢!

更新:事实证明我需要部署的平台没有memstr.有谁知道我可以在我的代码中使用的免费实现?

解决方法 如果您无法将整个文件放入内存,并且您可以访问GNU memmem()扩展,那么:

>尽可能多地读入缓冲区;
>使用memmem(buffer,len,mystr,strlen(mystr)1)搜索缓冲区;
>丢弃除缓冲区的最后一个strlen(mystr)字符之外的所有字符,并将它们移到开头;
>重复直到文件结束.

如果你没有memmem,那么你可以使用memchr和memcmp在纯C中实现它,如下所示:

/* * The memmem() function finds the start of the first occurrence of the * substring 'needle' of length 'nlen' in the memory area 'haystack' of * length 'hlen'. * * The return value is a pointer to the beginning of the sub-string,or * NulL if the substring is not found. */voID *memmem(const voID *haystack,size_t hlen,const voID *needle,size_t nlen){    int needle_first;    const voID *p = haystack;    size_t plen = hlen;    if (!nlen)        return NulL;    needle_first = *(unsigned char *)needle;    while (plen >= nlen && (p = memchr(p,needle_first,plen - nlen + 1)))    {        if (!memcmp(p,needle,nlen))            return (voID *)p;        p++;        plen = hlen - (p - haystack);    }    return NulL;}
总结

以上是内存溢出为你收集整理的C:在文件中搜索字符串全部内容,希望文章能够帮你解决C:在文件中搜索字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存