abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:33 | Nová verze

    Byla vydána nová verze 6.1 linuxové distribuce Lakka (Wikipedie), jež umožňuje transformovat podporované počítače v herní konzole. Nejnovější Lakka přichází s RetroArchem 1.22.2.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Nová verze

    Matematický software GNU Octave byl vydán ve verzi 11.1.0. Podrobnosti v poznámkách k vydání. Vedle menších změn rozhraní jsou jako obvykle zahrnuta také výkonnostní vylepšení a zlepšení kompatibility s Matlabem.

    |🇵🇸 | Komentářů: 0
    včera 21:44 | Nová verze

    Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 15.0.0. Přehled novinek v příspěvku na blogu společnosti Collabora. Vypíchnout lze Lua shell umožňující psát správu oken v jazyce Lua.

    Ladislav Hagara | Komentářů: 0
    včera 21:11 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 29 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 3
    včera 18:22 | IT novinky

    Ústavní soud na svých webových stránkách i v databázi NALUS (NÁLezy a USnesení Ústavního soudu) představil novou verzi chatbota využívajícího umělou inteligenci. Jeho posláním je usnadnit veřejnosti orientaci v rozsáhlé judikatuře Ústavního soudu a pomoci jí s vyhledáváním informací i na webových stránkách soudu, a to i v jiných jazycích. Jde o první nasazení umělé inteligence v rámci webových stránek a databází judikatury českých soudů.

    Ladislav Hagara | Komentářů: 15
    včera 13:00 | Nová verze

    Byla vydána nová verze 10.1 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnuta je podpora NanoPi Zero2 a balíček WhoDB.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Komunita

    Konference Otvorený softvér vo vzdelávaní, výskume a v IT riešeniach OSSConf 2026 proběhne od 1. do 3. července 2026 na Žilinské univerzita v Žilině: "Cieľom našej konferencie je poskytnúť priestor pre informovanie o novinkách vo vývoji otvoreného softvéru a otvorených technológií, o možnostiach využitia týchto nástrojov vo vede a vzdelávaní a taktiež poskytnúť priestor pre neformálne priateľské stretnutie užívateľov a priaznivcov

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Pozvánky

    Korespondenční seminář z programování (KSP) pražského Matfyzu pořádá i letos jarní soustředění pro začátečníky. Zváni jsou všichni středoškoláci a starší základoškoláci, kteří se chtějí naučit programovat, lépe uvažovat o informatických úlohách a poznat nové podobně smýšlející kamarády. Úplným začátečníkům bude určen kurz základů programování a kurz základních algoritmických dovedností, pokročilejším nabídneme různorodé

    … více »
    skywalqer | Komentářů: 1
    22.2. 04:11 | Komunita

    Fedora je od 10. února dostupná v Sýrii. Sýrie vypadla ze seznamu embargovaných zemí a Fedora Infrastructure Team mohl odblokovat syrské IP adresy.

    Ladislav Hagara | Komentářů: 22
    22.2. 03:44 | Zajímavý projekt

    Ministerstvo zahraničí Spojených států amerických vyvíjí online portál Freedom.gov, který umožní nejenom uživatelům v Evropě přístup k obsahu blokovanému jejich vládami. Portál bude patrně obsahovat VPN funkci maskující uživatelský provoz tak, aby se jevil jako pocházející z USA. Projekt měl být původně představen již na letošní Mnichovské bezpečnostní konferenci, ale jeho spuštění bylo odloženo.

    NUKE GAZA! 🎆 | Komentářů: 29
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (11%)
     (27%)
     (2%)
     (5%)
     (1%)
     (12%)
     (26%)
    Celkem 947 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: strncpy přidává '\031' – bug v glibc?

    stativ avatar 27.12.2009 11:29 stativ | skóre: 54 | blog: SlaNé roury
    strncpy přidává '\031' – bug v glibc?
    Přečteno: 476×
    Právě jsem narazil na prapodivný problém, kdy mi v jednom konkrétním případě strncpy přidává znak '\031' (end of medium?) na konec řetězce.

    Dělá mi to na desktopu s Archem (32 bit) – jak s gcc 4.4.2 tak s clang 2.6, tudíž předpokládám, že pokud bug není u mě tak bude nejspíš v glibc (2.11.1). Když jsem to ale zkoušel na mašině s OpenSuSE (64bit) tak to jelo správně.

    Ukázka kódu, který blbne:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main() {
        char *test = "x^3 + (-x)^5";
        /*char *test = "sin(123 + 45 * ln(27 - 6))";*/
        char *str = malloc(strlen(test) * sizeof(char));
    
        strncpy(str, test, strlen(test));
    
        printf("%s\n",str);
    }
    
    Čekal bych, že na výstupu bude: x^3 + (-x)^5

    ale já dostanu: x^3 + (-x)^5\031

    Zvláštní je, že s jiným řetězcem (např. tím zakomentovaným to funguje).

    Můj dotaz je – je bug u mě, nebo jinde?
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

    Řešení dotazu:


    Odpovědi

    27.12.2009 11:40 0-58glfsdhesr
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    "Prekladac automaticky pridava ke kazde konstatne typu *char znak \0, aby funkce poznaly, kde konci" (volne podle K&R). Avsak strlen vraci delku bez \0 (man 3 strlen).

    V tomto pripade by mozna stalo za to pouzit funkci strdup, ale nekdy se hodi si pamet alokovat rucne.

    Doporucuju na ten kod spustit valgrind, ktery odhali chyby podobneho typu.
    stativ avatar 27.12.2009 11:49 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Jop, přesně tak. Ani mě nenapadlo, že bych mohl takovou chybu udělat (zvlášť, když jinde to mám správně).
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    stativ avatar 27.12.2009 11:46 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Safra, já zapomněl na plus jedna.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    27.12.2009 16:48 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Měl byste se raději podívat na význam základních operátorů v C++, protože sizeof(test) vrátí délku celého pole, namísto volání strlen(test), násobení sizeof(char) a přičítání jedničky. Nejen, že použití sizeof(test) je elegantnější, ale narozdíl od Vámi prezentovaného řešení má konstatní složitost (strlen(test) má lineární složitost!).
    Pochybnost, nejistota - základ poznání
    AraxoN avatar 27.12.2009 17:59 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    Neviem ako v C++, ale v C sizeof(test) vráti veľkosť dátového typu "smerník".
    27.12.2009 18:25 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    protože sizeof(test) vrátí délku celého pole
    Jenže zde jde o pointer! Velikost celého pole může sizeof vrátit pouze pokud jde o pole v době deklarace. Prostě:
    int a[10];
    int *pa = a;
    // sizeof(a) = 10*sizeof(int) != sizeof(pa) = sizeof(void *)
    
    I am always ready to learn although I do not always like to be taught. (W. Churchill)
    stativ avatar 27.12.2009 19:15 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: strncpy přidává '\031' – bug v glibc?
    To je pěkný, ale je to pointer. Navíc sizeof vrací alokovanou paměť, ne tu, která je řetězcem reálně obsazená.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.