Byla vydána verze 11.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 11.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
Byla vydána nová verze 3.4.0 nástroje pro inkrementální kopírování souborů rsync (Wikipedie). Přehled oprav a vylepšení v souboru NEWS. Řešeno je 6 zranitelností.
V srpnu loňského roku byla vyhlášena RP2350 Hacking Challenge aneb oficiální výzva Raspberry Pi na prolomení bezpečnosti mikrokontroléru RP2350. Povedlo se. Včera byli představeni čtyři vítězové a jejich techniky.
Na čem aktuálně pracují vývojáři open source operačního systému Haiku (Wikipedie)? Byl publikován přehled vývoje za prosinec 2024. Vypíchnuto je začlenění webového prohlížeče Iceweasel, tj. alternativního sestavení Firefoxu.
Tetris a DOOM běžící v pdf. Proč a jak v příspěvku na blogu.
Společnost Oracle představila sadu nástrojů a skriptů pro sběr a analýzu dat o stavu linuxových systémů a jejich ladění pod společným názvem Oracle Linux Enhanced Diagnostics (OLED). K dispozici pod licencí GPLv2.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.3.0. Přináší RAIDZ Expansion, Fast Dedup, Direct IO, JSON a Long names.
Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu lednový souhrn novinek.
Baví vás bastlení, fyzika, IT a nebo prostě cokoliv technického? Proseděli jste celé Vánoce v záři obrazovky počítače a nebo jste o tom alespoň snili? Chcete se pochlubit technickými vánočními dárky? Pak doražte na Virtuální Bastlírnu - online pokec (nejen) techniků a bastlířů!
… více »Desktopové prostředí Enlightenment bylo vydáno ve verzi 0.27.0, provázejí ho knihovny EFL 1.28. Jde o převážně opravné vydání opět po roce.
#include <string.h> char *src = "abcdef"; char *var = NULL; var = strndup(src + 1, 3);Stejně jako to, co jsi napsal v PHP, ani tohle nefunguje s UTF-8.
#include < string > std::string s = "abcdef" std::string novy = s.substr(1,3)
std::string s("abcdef"); std::cout << s.substr(1, 3) << "\n"; std::string ss = s.substr(1, 3);
Projdete si dokumentaci k std::basic_string, tam toho najdete vic. Pokud se nejedna ciste o studijni zvedavost, tak bych vam doporucil pouzit standardni prostredky a o rychlost/pametovou narocnost se zacnete starat az ve chvili, kdy vam zacne byt na prekazku. Napsat pouzitelnou retezcovou tridu tak, aby umoznovala sdileni i substringu rozhodne neni zadna prdel. Mimochodem, to phpko vam kopii vytvori.
Jak jiz Pan Kufner zminil, je treba zavolat free(). Pokud ho nezavolate, pamet zustane alokovana po celou dobu zivota programu. A v tom vasem prikladu nevratne, protoze jste ukazatel vraceny strndup() de facto zahodil.
char* s = strndup(src + 1, 3); printf("Test %s\n", s); free(s);
vim ~/.emacs
char *str = strdup("abcdef"); // nějak se do str dostal řetězec char *var; var = str + 1; // uříznem začátek var[3] = 0; // uříznem konecDej si pozor na to, co pak budeš uvolňovat. free(var) bude dělat blbosti.
#ifdef OSKLIVY_WINDOWS char *strndup(const char *src, int count) { char *r; r = strdup(src); r[count] = 0; return r; } #endif
To už spíš takhle:
char* strndup(const char* src, size_t count) { char* np = (char*) malloc(count+1); if (np) { strncpy(np, src, count); np[count] = '\0'; } return np; }
A ještě poznámku: místo '#ifdef OSKLIVY_WINDOWS
' by bylo na místě spíš něco jako '#ifndef _GNU_SOURCE
', protože strndup()
není v žádné POSIX specifikaci, je to GNU extension.
V každém případě bych ale v C++ upřednostnil použití třídy std::string
Tiskni Sdílej: