Я попробовал этот код и написал другой аналогичный для чтения другого ввода, но программа прочитала во второй раз и первый, и второй stdin (также я использовал fflu sh (stdin) вместо fseek (), но это тоже не сработало)
int BUFFERSIZE=100;
char input[BUFFERSIZE];
char *final=malloc(1);
while(fgets(input,BUFFERSIZE-1,stdin))
{
final=realloc(final,strlen(final)+strlen(input)+1);
strcat(final,input);
if(input[strlen(input)-1]=='\n') break;
}
sscanf(final,"%d",&opt);
free(final);
fseek(stdin,0,SEEK_END);