Portál AbcLinuxu, 22. listopadu 2025 23:25
#include
int main(void)
{
int cislo[2];
char retazec[2][10];
fprintf(stdout, "Zadaj cislo 1: ");
scanf("%d", &cislo[0]);
setbuf(stdin, NULL);
fprintf(stdout, "Zadaj cislo 2: ");
scanf("%d", &cislo[1]);
setbuffer(stdin, NULL, 0);
fprintf(stdout, "Zadaj retazec 1: ");
fscanf(stdin, "%9s", retazec[0]);
fprintf(stdout, "Zadaj retazec 2: ");
fscanf(stdin, "%9s", retazec[1]);
printf("%s %s %d %d\n", retazec[0], retazec[1],
cislo[0], cislo[1]);
return 0;
}
Chcel by som aby sa nacital iba prvy parameter a nie cely buffer. Napr: Zadaj cislo 2: 22 retazec1 retazec2
a automaticky sa to nacita z bufferu ako tomu zabranit?
Řešení dotazu:
su), ale proč to vůbec chceš dělat?
setbuf a setbuffer slouží pro výstupní proudy a jenom pro tu aplikaci (pro bufferování dat, která se poté předají jádru), nijak neovlivňují buffery v jádře (které mj. provádějí bufferování stdin). Více viz manuál
su dělá to, že přečte a zahodí veškerý vstup předtím, než začne načítat heslo. Do konce řádku lze zahazovat vstup třeba pomocí while ((c = getchar()) != '\n' && c != EOF) ;
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.