Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) se spolu s partnery z dalších zemí připojil ke společnému upozornění (Joint Cybersecurity Advisory) týkajícímu se probíhající kybernetické kampaně skupiny LAUNDRY BEAR zaměřené na uživatele e-mailové platformy Zimbra Collaboration Suite (ZCS) nejméně od července 2025. NÚKIB doporučuje organizacím využívajícím Zimbra Collaboration Suite neprodleně ověřit, zda
… více »Intel vydal 42 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20260811 mikrokódů pro své procesory.
Sny o designu GNOME Shellu, článek s náhledy a videi, představuje dlouhodobou vizi týmu GNOME pro vylepšení uživatelského rozhraní GNOME Shellu. Zatímco nedávné verze přinášely spíše drobné úpravy, designéři nyní plánují zásadnější změny.
Byla vydána nová verze 10.5 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Nově vyžaduje podporu ECC (Elliptic Curve Cryptography) v libcrypto, včetně křivky NISTP521.
Byla vydána nová verze 10.6 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. S novými obrazy pro Orange Pi 4 Pro, Orange Pi Zero 3W a Odroid M1/M1S/M2. Přehled novinek v poznámkách k vydání.
Námořní drony používané elitními jednotkami britského královského námořnictva tajně posílaly údaje do Číny. Stroje vybavené čínskými komponenty měly být využívány pro vojenské operace na Blízkém východě. Kamery na dálkově řízených průzkumných člunech K3 Scout byly vybavené součástkami, které bez vědomí britského námořnictva odesílaly informace do spojeného zařízení v Číně. Britské námořní síly využívaly flotilu námořních dronů
… více »Alza.cz nabízí herní AlzaPC s předinstalovaným Linuxem (YouTube), konkrétně s linuxovou distribucí Bazzite (Wikipedie).
Squeak (Wikipedie), open source implementace programovacího jazyka a prostředí Smalltalk, byl vydán ve verzi 6.1. Přehled novinek v poznámkách k vydání.
V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Zapscape aneb CVE-2026-64561. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala 6 let (od července 2020 do července 2026).
Počítačová hra Knytt napsaná v Multimedia Fusion 2 byla vydána před 20 lety. Při této příležitosti byl dnes představen moderní port (YouTube) této plošinovky na současné operační systémy pod názvem Knytt Classic. Je zdarma k dispozici na Steamu a GOG.com.
1)Vstup je jasně daný: a oper b, kde a a b jsou typu double, oper je +,-,* nebo /
Přičemž program ignoruje mezery mezi jednotlivými vstupy - příklad:
3 + 1 program interpretuje jako 3+1 nehledě na to že uživatel zadal mnoho mezer mezi jednotlivými vstupy
2) Pokud uživatel zadá nějaký nesmysl - například 4 nebo 3a a zmáčkne ENTER tak se objeví chybová hláška
Takto vypadá můj současný kód:
int main()
{
char oper;
double a, b;
printf("Napiste co chcete vypocitat\n");
scanf("%lf", &a);
getchar();
oper = getchar();
scanf("%lf", &b);
switch(oper)
{
case '+':
printf("%f+%f=%.2f",a,b,a+b);
break;
case '-':
printf("%f-%f=%.2f",a,b,a-b);
break;
case '*':
printf("%f*%f=%.2f",a,b,a*b);
break;
case '/':
if(b != 0)
{
printf("%f/%f=%.2f",a,b,a/b);
break;
}
else
{
printf("Error! Delite nulou.");
break;
}
default:
printf("Error! Spatne zadany operator.");
break;
}
return 0;
}
Řešení dotazu:
char oper[2] = {0, 0};
double a, b;
if (3 == scanf("%lf %1[+/*-] %lf", &a, &oper, &b)) {
printf("%f %c %f = %.2f\n", a, oper[0], b, a + b);
} else {
fprintf(stderr, "Nejaka blbost.\n");
}
double a, b;
char op;
if (scanf("%lf %1[-+/*] %lf", &a, &op, &b) != 3)
printf("Error.\n");
else {
/* ... */
}
scanf() je mnohem inteligentnější, než se obecně ví...Ještě ho naučit, že tečka i čárka u plavacích čísel totéž je (ehm tedy desetinný oddělovač, bez ohledu na locale) a bylo by vystarané...
394 a zmáčknu ENTER tak se mi ta hláška ERROR nechce zobrazit, zatímco pokud zadám 3 56 nebo CauLidi tak se hláška ERROR zobrazí. Nevíte v čem je problém?
int main()
{
char oper;
double a, b;
char buffer[256];
printf("Napiste co chcete vypocitat\n");
fgets(buffer, 256, stdin);
if (sscanf("%lf %1[-+/*] %lf", &a, &oper, &b) != 3)
printf("ERROR.\n");
else
{ .... zbytek kódu je stejný....
Problémem ale teď je že pokud zadám normální vstup
3 + 1
tak to zmrzne jako předtím.
Ovšem když zadám
3458
tak se doopravdy objeví ERROR
Mohli byste mi to prosím vysvětlit a opravit?
scanf("%lf%*[ \t]%1[+/*-]%*[ \t]%lf", &a, &oper, &b)
Ale jinak se mi taktéž osvědčilo nejdříve načíst řádek a pak teprve ho parsovat. Pokud konec řádku nese význam, je to spolehlivější a lépe to reaguje na chyby ve vstupu.
Tiskni
Sdílej: