Portál AbcLinuxu, 13. srpna 2025 00:05
#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.