Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在文件中搜索行时使用哪种方法_C_Search_Fileparsing_File Search - Fatal编程技术网

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

C 在文件中搜索行时使用哪种方法,c,search,fileparsing,file-search,C,Search,Fileparsing,File Search,我有一个文件,文件的路径名为: /my/path1 /my/path11 /my/path12 /my/path13 文件结构是在每行中都有单独的路径。我只想在上面的文件中多次搜索字符串/my/path1或任何其他内容 我可以想出两种方法 每次都要逐行获取文件内容,然后搜索字符串。优点是文件可以是任意大小,我不需要担心缓冲区溢出 将内容加载到缓冲区,并使用缓冲区进行搜索。但是由于我不能控制文件的大小,所以在这里我应该谨慎 最好的方法是什么?我在unix中工作。C中是否有任何内置库命令可用于此目

我有一个文件,文件的路径名为:

/my/path1
/my/path11
/my/path12
/my/path13
文件结构是在每行中都有单独的路径。我只想在上面的文件中多次搜索字符串
/my/path1
或任何其他内容

我可以想出两种方法

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

  • 将内容加载到缓冲区,并使用缓冲区进行搜索。但是由于我不能控制文件的大小,所以在这里我应该谨慎


  • 最好的方法是什么?我在unix中工作。C中是否有任何内置库命令可用于此目的?或者如何在C代码中使用
    awk
    完成相同的任务。

    如果使用stdio,它将为您执行缓冲。您可以通过使用函数缓冲多行来更改其操作
    getline
    可以用于逐行检查。

    我认为在内存中加载所有文件不是一个好主意。我想使用
    fgets
    strcmp
    是最好的方法

    您必须使用C,并且不能仅对execv系列的
    sed
    /
    awk
    使用系统命令?否则,Exc:<代码> SED-N/PATOTATCH/P′PATFILATIONTXT/< COD> <代码> GETLION>代码>是C++的一部分,不是吗?它是STDIO(GNU扩展)的一部分。参见或您可以使用FGETO,谢谢。我不知道这个函数。我读过
    mangetline
    ,发现它非常有用。特别是当动态缓冲区不够大而无法获取所有字符串时,它能够重新分配动态缓冲区。