Manipulação de Arquivo em C

Olá pessoal, o problema é que tenho um arquivo texto com milhões de caracteres. Em um determinada string que eu começar a gravar os inteiros em uma struct e imprimir, até ai tudo bem, mas quando eu mando ela parar em outra string que eu determino ele não para, e imprime e salva todo o resto do conteúdo.

Ex.: Arquivo.txt contem:

chocolate bolo sorvete lasanha
caneta, blusa, calça, dinheiro, diversão
cinema teatro música filme
12 34 32
54 65 43
98 09 87
76 86 53
21 14 56
bombom água coca-cola seriados
computador internet orkut msn
twitter blog férias praia sol mar

Eu determino a palavra filme, depois dela irei começar a imprimir e a salvar os inteiros na minha struct, o problema é que ele salva até a palavra "mar"
e eu determino até “bombom”, mas não da certo. Olha a minha função ta aqui.

int ler_arquivo()
{
char inicio[] = "filme"; 
char fim[] = "bombom"; 
char str[100];
int c;
FILE *fp;
fp = fopen("arquivo.txt","r");
if(!fp)
exit(1);
int i;
int num;

while (fgets(str,sizeof(str),fp)!=NULL){ //lê linha a linha do ficheiro
         if (strstr(str,inicio)!=NULL) //Verifica se uma string existe dentro de outra
               while((c = getc(fp) ) != EOF){
                           if (strstr(str,inicio)!=NULL) //Verifica se uma string existe dentro de outra
//struct
                           break;
                           else{
                           printf("%c",c);
                           }
                           }
         }
                          
}

Pessoal coloque uma função teste, que ta toda alterada… a que esta dando o erro é essa:

int test() {
char nome[] = "filme"; 
char nome2[] = "bombom";
char str[100];
char c;

FILE *fp;
fp = fopen("arquivo.txt","r");
if (!fp)
exit(1);

while (fgets(str,sizeof(str),fp)!=NULL){ //lê linha a linha do ficheiro
         if (strstr(str,nome)!=NULL){ //Verifica se uma string existe dentro de outra
               while((c = getc(fp) ) != EOF)
                           printf("%c",c);
//Struct
         }
         if (strstr(str,nome2)!=NULL){ //Verifica se uma string existe dentro de outra         
         break;
         printf("Existe tbm\n");
         }
}
         fclose(fp);
return 0;
}