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 03:00 | Komunita

    Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.

    Ladislav Hagara | Komentářů: 0
    včera 18:11 | Humor

    Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.

    NUKE GAZA! 🎆 | Komentářů: 1
    včera 18:00 | Humor

    scx_horoscope je „vědecky pochybný, kosmicky vtipný“ plně funkční plánovač CPU založený na sched_ext. Počítá s polohami Slunce a planet, fázemi měsíce a znameními zvěrokruhu. Upozornil na něj PC Gamer.

    |🇵🇸 | Komentářů: 1
    30.1. 18:22 | Komunita

    O víkendu probíhá v Bruselu konference FOSDEM 2026 (Free and Open source Software Developers’ European Meeting). Program konference je velice nabitý: 37 místností, 71 tracků, 1184 přednášejících, 1069 přednášek, prezentací a workshopů. Sledovat je lze i online. K dispozici budou jejich videozáznamy. Aktuální dění lze sledovat na sociálních sítích.

    Ladislav Hagara | Komentářů: 3
    30.1. 18:00 | IT novinky

    Společnost Nex Computer stojící za "notebooky bez procesorů a pamětí" NexDock představila telefon NexPhone, který může funguje jako desktop PC, stačí k němu připojit monitor, klávesnici a myš nebo NexDock. Telefon by měl být k dispozici ve třetím čtvrtletí letošního roku. Jeho cena by měla být 549 dolarů. Předobjednat jej lze s vratní zálohou 199 dolarů. V dual-bootu by měl být předinstalovaný Android s Linuxem (Debian) jako aplikací a Windows 11.

    Ladislav Hagara | Komentářů: 3
    30.1. 16:00 | Nová verze

    Byla vydána nová major verze 9.0 softwaru pro správu elektronických knih Calibre (Wikipedie). Přehled novinek v poznámkách k vydání. Vypíchnuta je podpora AI.

    Ladislav Hagara | Komentářů: 2
    30.1. 14:22 | Nová verze

    Wasmer byl vydán ve verzi 7.0. Jedná se o běhové prostředí pro programy ve WebAssembly. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    30.1. 12:22 | Zajímavý software

    V reakci na nepopulární plán Microsoftu ještě více ve Windows prohloubit integraci umělé inteligence Copilot, Opera na sociální síti 𝕏 oznámila, že připravuje nativní linuxovou verzi prohlížeče Opera GX. Jedná se o internetový prohlížeč zaměřený pro hráče, přičemž obsahuje všechny základní funkce běžného prohlížeče Opera. Kromě integrace sociálních sítí prohlížeč například disponuje 'omezovačem', který umožňuje uživatelům omezit využití sítě, procesoru a paměti prohlížečem, aby se tak šetřily systémové zdroje pro jinou aktivitu.

    NUKE GAZA! 🎆 | Komentářů: 8
    30.1. 06:22 | Zajímavý software

    NVIDIA vydala nativního klienta své cloudové herní služby GeForce NOW pro Linux. Zatím v beta verzi.

    Ladislav Hagara | Komentářů: 6
    30.1. 04:33 | Zajímavý projekt

    Open Gaming Collective (OGC) si klade za cíl sdružit všechny klíčové projekty v oblasti linuxového hraní počítačových her. Zakládajícími členy jsou Universal Blue a Bazzite, ASUS Linux, ShadowBlip, PikaOS a Fyra Labs. Strategickými partnery a klíčovými přispěvateli ChimeraOS, Nobara, Playtron a další. Cílem je centralizovat úsilí, takže namísto toho, aby každá distribuce udržovala samostatné opravy systému a podporu hardwaru na

    … více »
    NUKE GAZA! 🎆 | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (10%)
     (24%)
     (3%)
     (5%)
     (2%)
     (12%)
     (31%)
    Celkem 703 hlasů
     Komentářů: 22, poslední 29.1. 23:06
    Rozcestník

    Dotaz: pomoc s ladenim kodu v C

    17.8.2009 17:37 ext3fs
    pomoc s ladenim kodu v C
    Přečteno: 322×

    Dobry den,

     chci poprosit s pomoci nalezeni chyby v nasledujicim kodu:

    (komentuji radky kde valgrind hlasi chybu).

    char *get_term(char *str, int pos)                                              
    {                                                                               
    int n;                                                                          
    int word = 0;                                                                   
    int w = 0, w_m = 0;                                                             
    short in_word = 0;                                                              
    short out_word = 0;                                                             
    char **words;                                                                   

        for(n = 0; str[n] != '\0'; n++)                            
        {                                                          
                    if (str[n] == '<' || str[n] == ' ' || str[n] == '>')
                    {                                                   
                    if (in_word)                                        
                    {                                                   
                                    if (w > w_m)                        
                                    w_m = w;                            
                    }                                                   
                    out_word = 1;                                       
                    in_word = 0;                                        
                    w = 0;                                              
                    }                                                   
                    else if (!in_word)                                  
                    {                                                   
                    word++;                                             
                    out_word = 0;                                       
                    in_word = 1;                                        
                    }                                                   
                    if (in_word)                                        
                    w++;                                                
        }                                                               

    /*ZDE*/    if ((words = (char **)malloc(word*(sizeof(char *)))) == NULL)
            {                                                        
                    fprintf(stderr, "chps : %s\n", strerror(errno));
                    exit (1);                                        
            }                                                        
                                                                     
        for (n = 0; n < word; n++)                                   
            {                                                        
                    if ((words[n] = (char *)malloc(w_m*sizeof(char))) == NULL)
                    {                                                         
                            fprintf(stderr, "chps : %s\n", strerror(errno));  
                            exit (1);                                         
                    }                                                         
            }                                                                 

        in_word = out_word = 0;
        w = w_m = word = 0;    
        for(n = 0; str[n] != '\0'; n++)
        {
                    if (str[n] == '<' || str[n] == ' ' || str[n] == '>')
                    {
                    if (in_word)
                    {
                                    if (w > w_m)
                                    {
                                    w_m = w;
                                    }
                                    /*ZDE*/ words[word - 1][w] = '\0';
                    }
                    out_word = 1;
                    in_word = 0;
                    w = 0;
                    }
                    else if (!in_word)
                    {
                    word++;
                    out_word = 0;
                    in_word = 1;
                    }
                    if (in_word)
                    words[word - 1][w++] = str[n];
        }

        if (pos <= word)
                    return(words[pos - 1]);
        else
                    return(" ");
    }

    Funkce se vola napr get_term("<NAME opt1 opt2 opt3>", 2); a

    vrati opt1.

     

    Dekuji.

    Odpovědi

    17.8.2009 19:12 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: pomoc s ladenim kodu v C
    když to chcípe na malloc, tak jste pravděpodobně poškodil haldu zapsáním mimo meze polí. při pohledu na kód se nedivím... není to trochu moc práce kvůli takové blbosti?
    
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    char *get_term(const char *str, int pos)
    {
            char *p, *q, *r;
            size_t len;
    
            if ((pos < 1) || !str) {
                    return NULL;
            }
            len = strlen(str);
            if ((*str != '<') || (str[len - 1] != '>')) {
                    return NULL;
            }
    
            p = (char *)str + 1;
            while (--pos) {
                    p = strchr(p, ' ');
                    if (!p || !*p) {
                            return NULL;
                    }
                    p++;
            }
            q = strchr(p, ' ');
            if (!q) {
                    q = (char *)str + len - 2;
            }
            if (p > q) {
                    return NULL;
            }
            r = malloc(q - p + 2);
            if (!r) {
                    return NULL;
            }
            memcpy(r, p, q - p + 1);
            r[q - p + 1] = '\0';
            return r;
    }
    
    int main()
    {
            const char *s = "<a b c d>";
            int i;
    
            for (i = 1; i <= 5; i++) {
                    char *p = get_term(s, i);
    
                    printf("%d: %s\n", i, p ? p : "not found");
                    if (p) {
                            free(p);
                    }
            }
            return 0;
    }
    
    
    In Ada the typical infinite loop would normally be terminated by detonation.
    17.8.2009 20:34 ext3fs
    Rozbalit Rozbalit vše Re: pomoc s ladenim kodu v C

    Dekuji za spravne nakopnuti. Kod jsem smazal a napsal znovu na polovinu radku a uz to funguje.

    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.