Вы израсходовали все входные данные и исчерпали дескриптор файла, поэтому, если вы не перемотаете файл, вам нужно будет снова открыть его, чтобы вернуть его к началу, чтобы вы могли выполнить сканирование снова.
Вы можете переместить указатель чтения с помощью seek
:
seek(FILENAME, 0, SEEK_SET);
Если вы хотите сделать это за один проход чтения, вам сначала нужно будет захватить ввод в массив,затем grep и цикл снова.