Diskuze: scanf("%d", &i) zadam ENTER a chcem aby program pokračoval
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Problém je v tom, že funkcia čaká znak(y) a potvrdenie Entrom. Keď dám len Enter, nič sa nedeje a čaká na znak(y).
if (scanf("%d", &nastaveny_cas) == 0) {
printf("OK\n");
getch();
}
else {
printf("NOK\n");
getch();
}
Tak zaprvé moc nechápu tu první podmínku..
These functions return the number of input items successfully matched
and assigned, which can be fewer than provided for, or even zero in the
event of an early matching failure.
The value EOF is returned if the end of input is reached before either
the first successful conversion or a matching failure occurs. EOF is
also returned if a read error occurs, in which case the error indicator
for the stream (see ferror(3)) is set, and errno is set indicate the
error.
Takže tak, jak to máš teď to bude (asi) dělat tohle: Pokud zadáš něco jiného než číslo, vypíše OK a bude čekat na další znak.
Funkce getch není standardní a vidím je vlastně poprvé, takže s tou ti
moc neporadím 
U scanf (a obecně zadávání do konzole) pozor. Vstup, co zadáš, se pošle až po ukončení vstupu - posílá se celý řádek, ne znaky. Ukončení řádku se v Linuxu dělá pomocí CTRL+D a ve windows pomocí CTRL+Z. Jinak se typicky ukončuje i enterem (ale třeba u mě na Ubuntu jen, když něco předtím zadáš).
"Tak zaprvé moc nechápu tu první podmínku."
To je len ukážka ako to čo chcem nefunguje.
Funkcia getch() je z knižnice conio.h a je windowsácka, pre linux sa dá
nahradiť funkciou:
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
int getch() {
struct termios oldt,
newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
Používa sa na zadanie znaku (stlačenie klavesy) bez nutnosti potvrdenia
Entrom.
Podľa toho, že tu zatiaľ nebola odpoveď s jednoduchým riešením myslím,
že to nebude až také jednoduché a napíšem to inakšie.
David, išlo mi o to, že mám nastavenú hodnotu na konkrétne číslo, ale
užívateľ má možnosť zmeniť ju podľa svojich predstáv. Teda:
Výpis programu:
Bla bla bla, hodnota je prednastavená na 1000, ale môžte si ju zmeniť ako
vám vyhovuje:
(tu ak užívateľ zadá Enter, program pokračuje ďalej a ostane 1000, ak
zadá iné číslo, program pokračuje so zadanou hodnotou)
Samozrejme, že to viem riešiť iným spôsobom, ale myslel som si, že to
pôjde jednoduchšie. 
Tak tam můžeš dát například: Zapište novou hodnotu pro bla, pokud nechcete hodnotu změnit napište 'n'.
Takže getch() čte vstup z terminálu unbuffered, jo? A není to zbytečnost? Jako dovedu si představit použití.. Ale většinou bohatě stačí čekat na enter nějak takto:
while (getchar() != '\n')
;
Každopádně psát interaktivní konzolové aplikace (obbzvlášť pro
windows) mi přijde vcelku zbytečné.. Tam je lepší udělat normální
okenní aplikaci. Konzolové se hodí pro dávkové zpracování, kde se ovšem
na uživatele nesmí na něco ptát a berou si vstup z argumentů při
spuštění.. Případně se zavádí přepínač -i, který zapíná
interaktivní ražim 
Jasne že nie je problém to riešiť iným spôsobom.
Ale bežný užívateľ najradšej na potvrdenie používa Enter, nie "Zadajte
hodnotu alebo stlačte 'n'", ale " Potvrďte klávesou Enter alebo zadajte
vlastnú hodnotu" a my by sme sa mali snažiť to písať púre užívateľou
tak, aby boli čo naspokojnejší. 
Jasné je aj to, že som čakal niečo v zmysle:
"Konzolové se hodí pro dávkové zpracování, kde se ovšem na uživatele
nesmí na něco ptát a berou si vstup z argumentů při spuštění."

Ale my sa tu hráme aj na céčko, v ktorom napríklad napíšeš hru a tá ak
nie je interaktívna, je o ničom. 
Tak jasné.. 
Ale hru je lepší psát v něčem jiném, než C 
To je jasné, ale vieš si predstaviť koľko sa dá získať
programátorských skúseností, keď sa pokúsiš napísať nejakú, len trochu
zložitejšiu hru v céčku? 
Navyše keď ju napíšeš multiplatformovo!
Zobrazeno 8 zpráv z 8.