Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.
Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.
Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].
Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂
Byla vydána nová major verze 8.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.
Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.
"Prvni"Tak hned prvni iterace while (input[i]) dosadi do tmpsrc[0] pismenko "p" do tmpsrc[1] dosadi "P", tmpsrc[2] "r" atd az tam vypise cely retezec z pole input. Jeste nikdy jsem na toto podivne chovani nenarazil. Nejdirv me napadlo, ze by se mohlo jedna o to, ze se predava cela adresa input[], jenze tady jde zkratka o prachobycejne pripinani jendotlivych pismenek... nechapu to a bydy velmi rad, kdyz mi to nekdo osvetli. Doufam, ze jsem vse napsal srozumitelne.
while (fgets(input, 512 , fr) != NULL){ int i = 0; line++; unsigned len = strlen(input); char tmpstr[len]; tmpstr[0] = 0; //pro poreby fce strcat, ktera appenduje od prvni nuly char c[1]; while (input[i]){ c[0] = input[i]; if (isupper(*c)) c[0]=tolower(*c); //pismenko se predela na male jeste bez problemu strcat(tmpstr, c); //zde problem, spolu s konvertovanym pismenkem se pripne cely obsah input[]; i++; }
Řešení dotazu:
char c[1]
. Teda jednoprvkové pole charov. Neskôr s ním ale zaobchádzaš ako so stringom keď ho pošleš do strcat()
. To ale robí galibu, pretože nie je "zero-terminated". Neskúmal som či sú v tom ešte aj nejaké iné problémy, ale keď už si zvolil tento prístup tak skús deklarovať c ako char c[]={0,0};
Predsa len by som ale odporučil skúsiť nájsť nejaké iné riešenie, pretože niektoré znaky sa pri prevode na veľké/malé menia počet znakov (napr. nemecké ostré s), alebo niektoré znaky nie sú v jednom char-e pri multibyte-ovom kódovaní, atď ...
char c[]={0,0};pomohla, ted uz to kopiruje korektne, diky. Ja bych taky rad nasel jine reseni, jenze hledal jsem dlouho a na zadne jsem neprisel, nez vse prevest na mala/velka pismenka a pak pouzit strstr(). Kdyby byla nejaka funkce jako strstrt() ale case insensitive, tak beru vsema deseti :)
strupr()
a robiť strstr()
na výsledku.
Ak do úvahy pripadajú aj iné než ascii znaky, tak preveď text na wchar cez mbstowcs()
a hľadaj pomocou wcsstr()
.
POSIXovou strcasecmp jsem zavrhl, protoze kontroluje cely string naraz, nevraci ukazatel na prvni vyskyt jako case sensitive strstr(), coz je mimoradna skoda
Proč by měla vracet nějaký výskyt? Výskyt čeho? Tvrdíte, že chcete porovnat dva řetězce, a přesně to strcasecmp()
dělá. Vrací vám výsledek toho porovnání. Oproti tomu strstr()
je funkce pro vyhledání podřetězce, takže je celkem logické, že vrací pointer na první výskyt toho podřetězce; jen jaksi neporovnává…
Zásadní problém je úplně jiný: ta funkce ignoruje locale, takže vám například veškerá slova začínající písmenem s diakritikou zařadí až za "z". Proto je vhodnější použít strcoll()
.
Doufam, ze jsem vse napsal srozumitelne.
Moc ne. Zkuste konkrétně a přesně napsat, co vlastně potřebujete. To, co jste napsal, má příliš mnoho možných výkladů. Pokud např. potřebujete zjistit první znak, kde se dva řetězce liší (s ohledem na aktuální locale a bez rozlišení malých a velkých písmen), můžete použít mbrtowc()
na načítání znaků a pak porovnávat hodnoty, které vám vrátí towlower()
. Konvertovat si celý řetězec je zbytečné a neefektivní.
http://www.abclinuxu.cz/poradna/programovani/show/366089
strcat
uplne zbytecne kvadratickou slozitost. Priom by to slo udelat uplne jednoduse:
while (input[i]) { tmpstr[i] = tolower(input[i]); ++i; } tmpstr[i] = 0;dalsi vec je ze deklarace
char tmpstr[len];vytvori pole dost velky na ulozeni retezce, ale ne ukoncujicy nuly totez:
char c[1];proboha tam je tolik chyb ze bych to ani nespocital
Tiskni
Sdílej: