#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, f=0;
int c;
char file_name[100];
char search[10];
printf("Enter the file name:");
scanf("%s", file_name);
printf("Search word:");
scanf("%s", search);
FILE *f = fopen((strcat(file_name, ".txt")), "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);
char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);
/*search*/
if (strstr(bytes, search) != NULL){
printf("found\n");
f = 1;}
else{
printf("Not found\n");
f=0;}
if (f==1){ /* if found...print the whole line */
....}
free(bytes);
}
Вышеуказанная моя программа для поиска строки из .txt-файла. Когда он найден, он печатает «найденный», иначе он печатает «Не найден». Теперь я хочу напечатать полную строку, частью которой была строка. Я думал об использовании «f == 1» в качестве условия для «если найден» печатать всю строку, не совсем уверен, что это лучший способ для продолжения.Как распечатать текущую строку?
Если вам небезразличны строки, ваш код должен содержать некоторые упоминания о концах строк, не? –
В том месте, где вы нашли совпадение, выполните поиск назад, пока не найдете окончание строки (или начало файла). Теперь выполните поиск вперед, пока не закончится следующая строка (или конец файла.). Между вами и вашей текущей линией. – tux3
Как мне искать назад? – jimo