在文件中搜索行时使用哪种方法

发布于 2025-01-03 13:34:40 字数 425 浏览 1 评论 0原文

我有一个包含文件路径名的文件:

/my/path1
/my/path11
/my/path12
/my/path13

文件结构是每行都有单独的路径。我想做的就是在上述文件中搜索是否存在字符串 /my/path1 或任何其他字符串,很多时候

我能想到两种方法。

  1. 每次逐行获取文件内容,然后搜索字符串。优点是文件可以是任意大小,并且我不需要担心缓冲区溢出。

  2. 将内容加载到缓冲区中并使用缓冲区进行搜索。但由于我无法控制文件大小,因此我应该小心谨慎。

最好的方法是什么?我在unix下工作。我可以使用 C 语言中的任何内置库命令来实现此目的吗?或者我如何在 C 代码中使用 awk 完成相同的任务。

I have a file with path names to files:

/my/path1
/my/path11
/my/path12
/my/path13

The file structure is that it has individual paths in each line. All I want to do is search for the existence of a string /my/path1 or anyother in the above file many times

I could think of 2 methods.

  1. every time get file contents line by line and then search the string. Advantage is that the file can be of anysize and I dont need to worry about buffer overflow.

  2. Load the contents into a buffer and search it using the buffer. But as I dont have control over the file size I should be cautious here.

What is the best approach? I am working in unix. Is there any in-build library commands in C that I can make use of for this purpose? Or how can I accomplish the same task using awk in C code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伪心 2025-01-10 13:34:40

如果你使用 stdio,它会为你做缓冲。您可以通过使用函数 setvbuf 来更改其操作来缓冲多个单个线。 getline 可以用来逐行检查。

If you use stdio it will do the buffering for you. You can change its operation by using the function setvbuf to buffer more than a single line. getline can by used to check line by line.

じее 2025-01-10 13:34:40

我认为将所有文件加载到内存中并不是一个好主意。我想,使用 fgetsstrcmp 是最好的方法。

I think loading all the file in memory is not a good idea. Using fgets and strcmp is the best way, I guess.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文