簡體   English   中英

確定文件是否在C中包含字符串

[英]Determine if a file contains a string in C

如何檢查給定的FILE*包含在Linux上運行的C語言中的字符串(如果重要)?

該字符串必須包含其上的整行。 例如,這:

jfjfkjj
string
jfjkfjk

會是真的; 但是這個:

jffjknf
fklm...string...lflj
jfjkfnj

不會。 我本質上是在尋找system("grep -x file")的內部替代品

這將逐行讀取文件,並在每次讀取后檢查該行是否與參數1( argv[1] )中提供的字符串匹配。 如果是這樣,它設置布爾infile (在定義的bool <stdbool.h>為true)。

#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv[]) {
    char    *filepath = "/path/to/file";
    bool    infile = false;
    char    *line = NULL;
    size_t  len = 0;
    ssize_t read;

    FILE    *fp = fopen(filepath, "r");

    if (!fp) {
        fprintf(stderr, "Failed to open %s\n", filepath);
        return 1;
    }

    while ((read = getline(&line, &len, fp)) != -1) {
        line[strcspn(line, "\n")] = 0;
        if (!strcmp(line, argv[1])) {
            infile = true;
            break;
        }
    }
    fclose(uuidfp);

    if (line)
        free(line);

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM