Programovací jazyk JavaScript (Wikipedie) dnes slaví 30 let od svého oficiálního představení 4. prosince 1995.
Byly zveřejněny informace o kritické zranitelnosti CVE-2025-55182 s CVSS 10.0 v React Server Components. Zranitelnost je opravena v Reactu 19.0.1, 19.1.2 a 19.2.1.
Bylo rozhodnuto, že nejnovější Linux 6.18 je jádrem s prodlouženou upstream podporou (LTS). Ta je aktuálně plánována do prosince 2027. LTS jader je aktuálně šest: 5.10, 5.15, 6.1, 6.6, 6.12 a 6.18.
Byla vydána nová stabilní verze 3.23.0, tj. první z nové řady 3.23, minimalistické linuxové distribuce zaměřené na bezpečnost Alpine Linux (Wikipedie) postavené na standardní knihovně jazyka C musl libc a BusyBoxu. Přehled novinek v poznámkách k vydání.
Byla vydána verze 6.0 webového aplikačního frameworku napsaného v Pythonu Django (Wikipedie). Přehled novinek v poznámkách k vydání.
Po více než 7 měsících vývoje od vydání verze 6.8 byla vydána nová verze 6.9 svobodného open source redakčního systému WordPress. Kódové jméno Gene bylo vybráno na počest amerického jazzového klavíristy Gene Harrise (Ray Brown Trio - Summertime).
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za listopad (YouTube).
Google Chrome 143 byl prohlášen za stabilní. Nejnovější stabilní verze 143.0.7499.40 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 13 bezpečnostních chyb.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu dosáhl 3,2 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 26,42 %. Procesor AMD používá 66,72 % hráčů na Linuxu.
Canonical oznámil (YouTube), že nově nabízí svou podporu Ubuntu Pro také pro instance Ubuntu na WSL (Windows Subsystem for Linux).
else {
printf("CHYBA: Neplatny vstup!\n");
exit(1);
tak mi kalkulačka počítá snadno i se zápornými čísly, ale také načítá veškeré další znaky, které při výpočtu ignoruje, ale na vstupu by být neměly.
Otázka tedy zní, jak tyto znaky odfiltrovat (či jinak ošetřit), aby na vstupu byla pouze čísla, platné operátory a vše ostatní by končilo errorem a koncem programu s příslušnou hláškou. Snad by se to dalo vyřešit nějakou vhodnou podmínkou na vstupu?
DRUHY - málo nebo žádné znaky na vstupu:
Zatím jsem nepřišel na to, jak ošetřit vstup, nak terém není nic, mezera, mezera a pouze číslo, mezera číslo a operátor. Prostě nedostatečný vstup. Stand nějak využít fci strncmp?
Byl bych rád, kdybyste mě někdo nakopnuli správným směrem. Píšu to od rána a už mi to nemyslí :)
Zde má dosavadní implementace.
int main()
{
//int vysledek;
int numInp;
char vstup[15];
int op;
int vysledek = 0;
int i;
int end = 0;
while(end != EOF){
end = scanf("%s", vstup); //Program postupně bude brát slova ze vstupu...
if(end == EOF)
break;
numInp = atoi(vstup);
for(i = 0; i < strlen(vstup); i++){
if(isdigit(vstup[i])) { //pokud načetl číslo...
numInp = atoi(vstup);
push(numInp); //...přidá jej na vrchol zásobníku...
}
else if(strlen(vstup) == 1){
switch(vstup[i]) /* ...pokud načetl operátor, vezme dvě čísla z vrcholu zásobníku,
*aplikuje na ně načtený operátor a výsledek uloží zpět na zásobník.*/
{
case '+':
vysledek = push(pop() + pop());
break;
case '-':
op = pop();
vysledek = push(pop() - op);
break;
case '*':
vysledek = push(pop() * pop());
break;
case '/':
op = pop();
if (op == 0){
printf("Nelze delit nulou\n");
exit(1);
}
else
vysledek = push(pop() / op);
break;
default:
printf("CHYBA: Neplatny vstup!\n"); //všechny jiné znaky (jednoznakové) než výše uvedené operandy
exit(1);
}
}
else {
printf("CHYBA: Neplatny vstup!\n"); // filtruje "smetí" typu sdf125, ale i záporná čísla
exit(1);
}
}
}
printf("%d\n", vysledek);
return 0;
}
Řešení dotazu:
$ man strtol strtod strtof strtold
int
main(int argc, char *argv[])
{
int base;
char *endptr, *str;
long val;
if (argc < 2) {
fprintf(stderr, "Usage: %s str [base]\n", argv[0]);
exit(EXIT_FAILURE);
}
str = argv[1];
base = (argc > 2) ? atoi(argv[2]) : 10;
errno = 0; /* To distinguish success/failure after call */
val = strtol(str, &endptr, base);
/* Check for various possible errors */
if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|| (errno != 0 && val == 0)) {
perror("strtol");
exit(EXIT_FAILURE);
}
if (endptr == str) {
fprintf(stderr, "No digits were found\n");
exit(EXIT_FAILURE);
}
/* If we got here, strtol() successfully parsed a number */
printf("strtol() returned %ld\n", val);
if (*endptr != '\0') /* Not necessarily an error... */
printf("Further characters after number: %s\n", endptr);
exit(EXIT_SUCCESS);
}
$ ./a.out 123
strtol() returned 123
$ ./a.out ' 123'
strtol() returned 123
$ ./a.out 123abc
strtol() returned 123
Further characters after number: abc
$ ./a.out 123abc 55
strtol: Invalid argument
$ ./a.out ''
No digits were found
$ ./a.out 4000000000
strtol: Numerical result out of range
Tiskni
Sdílej: