

borland C-nacitanie n znakov s medzerami z klavesnice
Zdravim, potrebujem pomoct s nacitanim n znakov(moze obsahovat aj medzere)-mam to nejak takto:
....
typedef struct{
char meno[20];
char priezvisko[30];
} clovek;
void nacitaj(char udaj[],int poc)
{int i=0,j=0;
for (j=0;j<poc;j++)
udaj[j]='\0';
i=0;
while ((j=getchar())!='\n')
{if (i<(poc-1))
{udaj[i]=j;
i++;}
else break;}}
void main(void)
{clrscr();
printf("Zadaj meno(max 20 znakov):\n");
nacitaj(osoba.meno,20);
printf("Zadaj priezvisko(max 30 znakov):\n");
nacitaj(osoba.priezvisko,30);
printf("\nMeno: %s",osoba.meno);
printf("\nPriezvisko: %s",osoba.priezvisko);
getch();}
...problem ale je, ze ked sa prvy string(meno) zada dlhsi ako 20 znakov, tak sa tie prebytocne znaky nacitaju do toho dalsieho stringu(prieyvisko). Poradte mi, ako to spravit(a aby to bolo cim jednoduchsie). dik.
Ahoj. Zkus použít vyprázdnění bufferu, je na to funkce flush().
Tu zavolej pro jistotu vždy po (každém) scanfu.
Nemám to vyzkoušené.
no hladal som nieco s tym flush, ale nejak som sa nedopracoval k niecomu co by mi pomohlo.
Nieco som nasiel-a vyriesil som to tak, ze pred nacitanie priezviska som vlozil:
Preboha, to si od koho opisal ze sa v tom ani nevyznas?
treba vyhodit to
else break;}}
resp dat namiesto toho
else i++;}}
alebo da sa to i++ dat mimo if.