While Schleife beenden mit kbhit in Programmiersprache C?

Hallo, ich habe folgende while Schleife die mir eine 10GB große .csv Datei nach einem bestimmten String durchsucht. Da die Suche etwas lange dauert möchte ich gerne die While schleife verlassen indem ich eine bestimmte Taste drücke, z.b "y". Habe dazu eine break Bedingung mit kbhit versucht umzusetzen:

Allerdings dauert die Suche mit der Abbruchbedingung break und kbhit sehr viel länger als ohne diese Funktion. Weiß jemand warum?

Bzw. kann ich auf einem anderen Weg die While Schleife verlassen sobald ich eine bestimmte Taste drücke?

  while(fgets(puffer, BUF, f) != NULL)
    {
       if(kbhit())
            {
            int key = getch();
            if(key == 'y')
                {
                    break;
                }
            }


        strcpy(puffer_bak, puffer);
        wort = strtok(puffer, trennzeichen);
        permno = atoi(wort);

        while(wort != NULL)
        {

            if(strcmp(wort,searchstring)==0)
            {

                if(permno!=permno_alt)
                {
                    printf("%s",puffer_bak);

                }
                permno_alt=permno;

            }

            wort = strtok(NULL,trennzeichen);
        }
    }
    fclose(f);
Informatik, programmieren c
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.