Non bisogna sempre inventare la ruota,basta usare la funzione piu sicira dello standard,fgets,ma dato che include anche lo '\n' che spesso è in eccesso,riscrivere la funzione diventa elementare.
char* con_gets(char* d,unsigned int sz)
{
char* ret = fgets(d,sz,stdin);
if ( ret != NULL)
ret[strlen(ret)-1] = '\0';
return ret;
}
In questo modo la dimensione minima o comunque il buffer dovrà essere maggiore di due rispetto alla lettura perchè comunque leggeremo anche lo '\n' e '\0'
Se invece vuoi fare di testa tua diventa:
char* con_gets(char* d,unsigned int sz)
{
char* std = d;
while ( (*d = getchar()) != EOF && *d != '\n' && sz-- > 0 ) d++;
*d = '\0';
return std;
}
Il codice non metterlo in una immagine ma usa gli appositi tag code e postalo direttamente sul forum.