Poniższy kod odczytuje plik tekstowy o jeden znak w czasie i wydrukować go na standardowe wyjście:Wyszukiwanie ciągu w pliku tekstowym C
#include <stdio.h>
int main()
{
char file_to_open[] = "text_file.txt", ch;
FILE *file_ptr;
if((file_ptr = fopen(file_to_open, "r")) != NULL)
{
while((ch = fgetc(file_ptr)) != EOF)
{
putchar(ch);
}
}
else
{
printf("Could not open %s\n", file_to_open);
return 1;
}
return(0);
}
Ale zamiast drukować na stdout [putchar (ch)] Chcę przeszukuj plik pod kątem określonych ciągów podanych w innym pliku tekstowym, tj. strings.txt i wyjście linia z meczu na out.txt
text_file.txt
:
1993 - 1999 Pentium 1997 - 1999 Pentium II 1999 - 2003 Pentium III 1998 - 2009 Xeon 2006 - 2009 Intel Core 2
strings.txt
:
Nehalem AMD Athlon Pentium
w tym przypadku trzy pierwsze linie text_file.txt
będzie pasować. Zrobiłem trochę badań operacji na plikach w C i wydaje mi się, że mogę czytać jedną postać w tym czasie z fgetc
[jak ja robię w moim kodzie], jedną linię z fgets
i jednym blokiem z fread
, ale bez słowa jak sądzę byłby idealny w mojej sytuacji?
dlaczego piszesz program ?! Użyj grep/awk/sed, aby to zrobić. –
Nie, Tim. Tagi służą do wyszukiwania. Nikt nie będzie tego szukał. – GManNickG
Tak, wiem ze standardowymi narzędziami Unix mogę to rozwiązać w ciągu kilku sekund, ale to ma na celu głębsze zrozumienie IO pliku C. –