[ Milan Aksic @ 25.06.2001. 19:21 ] @
Imao sam problema sa funkcijom scanf() iz standradne biblioteke, pa me zanima da li postoji neka alternativa ovoj funkciji.
Znam za funkciju gets() pa onda kasnije eventualno pretvaranje u int ili float ...
pozdrav.
[ Vojislav Milunovic @ 25.06.2001. 22:55 ] @
Ziv bio sto nekazes kakvih si problema imao.
[ Milan Aksic @ 26.06.2001. 00:36 ] @
Citat:
predator je napisao:
Ziv bio sto nekazes kakvih si problema imao.


Ziv bio reci(napisacu) cu ti. Ovo mi se pre desilo ali sam u medjuvremenu prevazisao problem na drugaciji nacin preko funkcije gets(), ali evo koda koji mi je pre pravio probleme, pa ces videti zasto pitam za alternativu funkciji scanf().

#include <stdio.h>
#include <stdlib.h>

int stepenovanje(int broj, int stepen);
//typedef enum proveravanje{ n, y }provera;

int main( void )
{
int broj, stepen, rezultat, Yes_No = 1;
//provera Yes_No = y;
char izbor;
while (Yes_No)
{
printf("nUnesi broj: ");
scanf("%d", &broj);
printf("nUnesi stepen: ");
scanf("%d", &stepen);

//scanf("%c", &izbor);
rezultat = stepenovanje(broj, stepen);
printf("nnRezultat je: %d", rezultat);
printf("nContinue (y/n): ");
scanf("%c", &izbor);
if (izbor == 'y')
continue;
else if (izbor == 'n')
Yes_No = 0;
else
printf("n(!) Neispravan izbor!");
break;
}
return (EXIT_SUCCESS);
}

int stepenovanje(int broj, int stepen)
{
if (stepen == 1)
return (broj);
else
return ((broj * stepenovanje(broj, stepen - 1)));
}

Ovaj program preskace ulaz podataka funkcijom
scanf("%c", &izbor);
osim ako ne ucinim vidljivim monetar kod u 19 liniji koji je isti
// scanf("%c", &izbor);
tada on ne preskace poziv funkcije scnaf() u 23 liniji iza stampanje poruke "Continue (y/n)". Znam da je verovatno greska do mene ali je ja ne vidim, i ne shvatam koje veze ima duplo postavljanje iste funkcije (scanf()) pri cemu se ova druga izvrsava ako postoji prva, dok prvu ignosrise. A ako ne postoji prva vec samo druga onda potpuno ignorise drugu, kao da nije napisan poziv funkcije??
[ Vojislav Milunovic @ 26.06.2001. 12:30 ] @
Problem je sto u bufferu ostaje n .Naime i meni je bilo cudno sto ovo ne radi.Napravio sam prost opit da vidim sta se desava. ;o)
Stavio sam ovako:

Code:

printf("Continue ... ");
scanf("%c",&izbor);
printf("%xn",izbor);
scanf(%c",&izbor);
printf("%cn",izbor);


Prvo je odstampano :
a iliti n sto znaci da se u bufferu nalazi n i posle je radilo.Prvo sam pogledao man fflush() da probam da flushjume buffer i u man pored fflush nadjem drugu funkciju:
Code:

     int
     fpurge(FILE *stream)


koja sluzi :
The function fpurge() erases any input or output buffered in the given stream.

i onda sam dodao samo :

izmedju printf("Continu") i scanf("%c",&izbor);
Code:

fpurge(stdin);


i to je resilo problem.Pazi mozes da imas dosta ali bas dosta problema nekad sa tim pratecim n u bufferu secam se da su u C++ za 21 dan objasnili na 2-3 (valjda tako bese) strane kako se cuvati toga,sta je buffer i sl.
[ Vojislav Milunovic @ 26.06.2001. 12:32 ] @
Mada mozes da stavis i samo:
Code:

scanf("\n%c",&izbor);


mada ne garantujem da ces bas uvek imati n u bufferu tako da fpurge() ce da odradi posao


[Ovu poruku je menjao predator dana 06-26-2001 u 11:34 AM GMT]
[ Milan Aksic @ 27.06.2001. 00:43 ] @
Da, znam kako da resim problem jer sam pre postovao to ne secam se tacno gde, i neki su mi ljudi odgovorili, da stavim ispred 'n' ili da ispraznim bafer, ali da se mozda nisi setio neke alternative funkciji scanf()?
Pozdrav.

[Ovu poruku je menjao passanger dana 06-27-2001 u 12:48 AM GMT]
[ Vojislav Milunovic @ 27.06.2001. 11:50 ] @
Code:

fscanf();


radi slicno samo sto trebas da mu odredis FILE * sa kog ce da cita.
Mozda fgets() nije los izbor ? (ali naknadno moras da konvertujes u int/float ... )
[ bashke @ 27.06.2001. 15:29 ] @
A sad jedno pitanje za vas dvojicu::::
Vidim da ste upuceni u programiranje sa c/c++ pa me interesuje gde ste to naucili??? Ja sam jedno vreme imao par knjiga iz kojih sam pokusavao da naucim prg. jezik ali su kjnige bile toliko nejasne da je to neverovatno!?!
Da li ste vi taj prg. jezik naucili iz knjiga ili sa nekakvih kurseva????
[ Vojislav Milunovic @ 27.06.2001. 19:29 ] @
Ja sam iz knjige "C++ za 21 dan"
[ c00l_daem0n @ 27.06.2001. 21:21 ] @
Citat:
predator je napisao:
Ja sam iz knjige "C++ za 21 dan"


mojne lazes pr*do :)))
knjiga nije losa, ali nije toliko obimna, jedino su dobro
opisani objekti i samo OO programiranje,
ali su zato nasi ukenjali sa prevodom i stamparskim greskama
[ Vojislav Milunovic @ 27.06.2001. 23:11 ] @
Ozbiljno ja sam sa njom poceo a posle dolaze na red razni textovi o C,unix programiranju... jebiga sa necim moas da pocnes