Ciao, perché devi usare solo la libreria standard del C, per renderlo portabile sia su linux che Windows, o perché ti è stato proibito di usare altro?
Secondo me, per stampare in Output e contemporaneamente "gestire" la tastiera, ho usi funzioni o usi thread, e tutti i metodi non fanno parte della libreria standard.

Per rendere il programma portabile, potresti usare i thread e il pre processore come fai con system(), includi header necessario , e imposti una costante di selezione, if(COSTANTE==1) funzioneThreadWindows() else funzioneThreadLinux()...