Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »int nanosleep(const struct timespec *req, struct timespec *rem) struct timespec { time_t tv_sec; /* sekundy */ long tv_nsec; /* nanosekundy */ };Funkce nanosleep() při úspěšném proběhnutí vrací 0. Pokud se vyskytne chyba, funkce vrátí -1, proměnnou errno nastaví na jednu z možných symbolických konstant a v určitých případech zapíše zbývající čas do ukazatele rem, pokud není nastaven na NULL.
sleep(5); /* pauza 5 sekund */
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <errno.h> #include <limits.h> enum { MAXNUM = 100, MAXLINE = 25, DELAY = 500000000 }; typedef struct numbers { long array[MAXNUM]; int num; } NUMBERS; int readline(char *a); int estrtol(char *line, long *n); int cmp(const void *p1, const void *p2); void nanoprint(NUMBERS n); int main() { NUMBERS n = {{0}, 0}; char line[MAXLINE]; int i = 0; printf("Zadejte cela cisla:\n"); while (readline(line)) { if (estrtol(line, &n.array[i])) { n.num++; i++; } } printf("\n"); qsort(n.array, n.num, sizeof(n.array[0]), cmp); nanoprint(n); return 0; } int readline(char *line) { int len; if (fgets(line, MAXLINE, stdin) != NULL) { len = strlen(line); if (len + 1 == MAXLINE && line[len-1] != '\n') while (getchar() != '\n') ; if (line[len-1] == '\n') line[len-1] = '\0'; return 1; } else return 0; } int estrtol(char *line, long *n) { char *endptr; errno = 0; *n = strtol(line, &endptr, 10); if (*endptr != '\0') { printf("error: not a number\n"); return 0; } else if (errno == ERANGE && *n == LONG_MAX) { printf("error: overflow\n"); return 0; } else if (errno == ERANGE && *n == LONG_MIN) { printf("error: underflow\n"); return 0; } else if (endptr == line) { printf("error: empty input\n"); return 0; } else return 1; } int cmp(const void *p1, const void *p2) { long a, b, c; a = *(long *) p1; b = *(long *) p2; c = a < b ? -1 : a == b ? 0 : 1; return c; } void nanoprint(NUMBERS n) { struct timespec ts = {0, DELAY}; int i; for(i = 0; i < n.num; i++) { printf("%ld\n", n.array[i]); nanosleep(&ts, NULL); } }
Tiskni
Sdílej:
long int strtol(const char *str, char **endptr, int base)Proč vlastně?
const
nedat, aspoň se vyhnete zbytečnému přetypovávání v případě, že potřebujete předat string, který už const
je.
errno
na nulu. V opačném případě je jakýkoliv další pokus o zjištění selhání (přetečení) naprosto zbytečná záležitost. U příbuzných unsigned variant (strtoul
) bych zmínil, že klidně přijmou záporné číslo a "zkonvertují" ho na kladné (podle pravidla převodu signed na unsigned). Proto je dobré před voláním funkce zkontrolovat první nebílý znak, jestli není mínus.
man 3 strtol
).
int usleep(useconds_t usec)
z unistd.h?
NUMBERS n = {{0}, 0};ale
numbers_t numbers; // bzero(&numbers, sizeof(numbers_t)); /* keď nenastavuješ všetky prvy v štrukture pri inicializacií v programe */ numbers.array={0}; numbers.num=0;A parametre funkcie nedefinuj ako typ void, ale ako long *. Nakoľko môžeš pri preklade dať skontrolovať typovú kontrolu. Čo pri void sa stratí.
int cmp(const void *p1, const void *p2)
.