Определите, содержит ли файл строку в C
Как я могу проверить, если данный FILE*
содержит строку в C, работающую в Linux (если это имеет значение)?
Строка должна состоять из всей строки, на которой она находится. Например, это:
jfjfkjj
string
jfjkfjk
было бы правдой; но это:
jffjknf
fklm...string...lflj
jfjkfnj
не будет. Я, по сути, ищу внутреннюю альтернативу system("grep -x file")
1 ответ
Решение
Это читает файл построчно и проверяет, соответствует ли строка строке, указанной в аргументе 1 (argv[1]
после каждого прочтения Если это так, он устанавливает бул infile
(bools определены в <stdbool.h>
) к истине.
#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;
}