| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 29.04.09 Prihlásený: 10.07.21 Príspevky: 38 Témy: 12 | Napísal Luk1: 10.05.2009 17:23 | |
|
caute mam taky problem, mam program ktory mi ale po skompilovani v unixe nebezi spravne, ide o to, mam menu a ked si clovek zvoli polozku napr. 2 tak mu vypise obsah struktury a na konci caka na stalcenie klavesy a potom skace zase do menu, lenze mi to nejde, necaka na klavesu a skace hned do menu
tu je cast kodu:
menu:
Kód: do{ system("clear"); printf("\r\n************************************\n"); printf("* *\n"); printf("* SKLAD POCITACOVYCH KOMPONENTOV *\n"); /* nazov programu */ printf("* *\n"); printf("************************************\n"); printf("\n HLAVNE MENU \n"); printf("\n 1. Zadaj novu skladovu polozku \n"); printf(" 2. Vypis skladovych poloziek na stave\n"); /* vypis hlavneho menu */ printf(" 3. Vyhladaj polozku na sklade\n"); printf(" 4. Ukonci pracu s programom\n"); printf("\nPocet komponentov v sklade: %d \n",index); switch (getchar()) { / case '1' : printf("\n Zvolil si akciu c.1\n"); index=subor(index); break; case '2' : system("clear"); printf("\nVypis skladovych poloziek\n\r"); vypis_sp(index); break; case '3' : index=nacitaj(index); break; case '4' : uloz_sp(index); return 1; default : printf("Zle zvolena akcia\n"); }
} while(1); a tu je funcia vypis ktora mi nejde spravne: Kód: void vypis_sp( int index) {
int i; printf("CSP\tNazov\t\tPopis\t\tpocet"); printf("\r\n--------------------------------------------------------------------------------\r\n"); for( i=0;i<index;i++){ if( sklad[i].stav == 'a' ) printf("\r\n%s\t%s\t\t%s\t\t%d",sklad[i].csp,sklad[i].meno,sklad[i].popis,sklad[i].pc); } printf("\r\n\r\n Pocet komponentov v sklade: %d",index); getchar(); // >>>>TU BY MALO CAKAT NA KLAVESU ALE NECAKA <<<< } dakujem za pomoc
|
|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
skus pridat este jeden getchar(), niekedy to vyriesi zahadu, ked to nepomoze tak to bude dost zaujimava chyba
|
|
Registrovaný: 01.05.05 Príspevky: 13343 Témy: 1494 Bydlisko: Bratislava | Napísal JanoF: 10.05.2009 17:28 | |
|
Mas na zaciatku #include <ncurses.h> ?
Popripade si neskusal dat getchar(); za printf("\nVypis skladovych poloziek\n\r"); vypis_sp(index); ?
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server |
|
Registrovaný: 29.04.09 Prihlásený: 10.07.21 Príspevky: 38 Témy: 12 | Napísal autor témy Luk1: 10.05.2009 17:32 | |
|
rofl dik, dal som 2x to getchar() a uz to ide diki fest
|
|
Registrovaný: 30.05.07 Prihlásený: 29.03.14 Príspevky: 641 Témy: 46 |
JanoF - to bolo tesne
este to objasnim - mas tam ze switch(getchar()) - takze ty zadas nejaky znak a potvrdis ho enterom - takze vlastne zadas 2 znaky, getchar() v tom switch nacita prvy znak ale na buffery ostane este enter a ten sa nacita zrejme pri tom druhom getchar() - takto by to mohlo podla mna fungovat, preto pomohlo pridanie dalsieho getchar()
|
|
Registrovaný: 29.04.09 Prihlásený: 10.07.21 Príspevky: 38 Témy: 12 | Napísal autor témy Luk1: 10.05.2009 17:37 | |
|
nj asi ano, len este musim aj zdvojovat ked nacitavam do premennej do getchar() ale aspon to ide, este raz dik
|
|
Registrovaný: 30.04.08 Prihlásený: 15.05.15 Príspevky: 884 Témy: 3 |
Hej, funguje to tak, ja vsak radsej davam
Kód: while (getchar() != '\n'); ak by niekto na zaciatku zadal viac znakov. Cize ak das Kód: c = getchar(); while (getchar() != '\n');
tak ti po vykonani cyklu zostane buffer vyprazdneny, pricom v premennej c bude ulozeny len prvy zadany znak.
_________________ Empty your memory, with a free()… like a pointer! If you cast a pointer to an integer, it becomes the integer, if you cast a pointer to a struct, it becomes the struct… The pointer can crash…, and can overflow… Be a pointer my friend… |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|