Mislim da u konzolnim programima ne mozes da ogranicis koliko ce tacno karaktera uneti neko sa ekrana. Mozda gresim ali mislim da ne postoji neka standardna bilbioteka koja bi to radila.
U svakom slucaju posto mi se cini da ti treba resenje u C-u, mozes umesto da citas ceo string pa posle odsecas deo koji ti treba, jednostavno da citas prvih 30 karaktera sa tastature a one kasnije zanemaris. Odnosno nesto u fazonu:
Code:
for(i=0;i<MAX_SIZE-1;i++) {
if ((str[i]=getchar())=='\n') break; //ovo ako neko lupi enter pre 30. karaktera
//ti naravno radi proveru i za razmake ako zelis
}
/* naravno ne zaboravi da na kraju stavis null karakter
takodje primeti da ako izletimo iz for petlje pomocu break
prepisacemo taj karakter koji nam nije potreban sto je inace dobro
a ako for petlja zavrsi regulano ciklus onda ce se upisati zadnji karakter
sto je opet kako treba */
str[i]='\0';
jedino sto je problem sto opet mogu da se unesu i vise od 30 karaktera jer getchar pocne da cita tek kada se lupi enter na tastaturi. jednom sam video neku f-ju koja je citala karaktere odmah po unosenju ali nisam uspeo sada da je nadjem (mislim da je bila kreacija nekog lika tako da nije standardna). Ako naletim ostavicu ti je ovde i to ce ti resiti problem.
U drugom problemu jedino ne znam cemu sluzi funkcija flushall(), mozda je problem do nje. U svakom slucaju probaj nesto ovako:
Code:
...
flushall();
printf("\n\n\n\t\t\t Do you want to continue (y/n)");
answer=getchar();
...