确定文件是否包含 C 格式的字符串



如何检查给定的FILE*是否包含运行在Linux上的C字符串(如果重要的话(?

字符串必须由它所在的整行组成。例如,这个:

jfjfkjj
string
jfjkfjk

将是真的;但是这个:

jffjknf
fklm...string...lflj
jfjkfnj

不会。我本质上正在寻找system("grep -x file")的内部替代方案

这将逐行读取文件,并在每次读取后检查该行是否与参数 1 (argv[1]( 中提供的字符串匹配。如果是这样,它将布尔值infile(<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 %sn", 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;
}

相关内容

  • 没有找到相关文章

最新更新