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 11:33 | Nová verze

    Byl vydán LineageOS 24 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu. LineageOS 24 je založený na Androidu 17.

    Ladislav Hagara | Komentářů: 0
    dnes 03:55 | IT novinky

    Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.

    Ladislav Hagara | Komentářů: 1
    včera 23:11 | Bezpečnostní upozornění

    Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.

    vencour | Komentářů: 0
    9.10. 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 14
    9.10. 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 9
    9.10. 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 15
    9.10. 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 12
    9.10. 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 13
    9.10. 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    9.10. 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2829 hlasů
     Komentářů: 32, poslední dnes 17:02
    Rozcestník

    Dotaz: Prace se souborem C

    4.3.2020 22:55 Dooyer
    Prace se souborem C
    Přečteno: 1287×
    int main(void) {
        int a = 0, b = 0, soucet = 0, polea[11];
        char c, poleb[11];
        FILE *fr;
        int d;
    

    if((fr = fopen("ctvrtek.txt","r")) == NULL) { printf("Soubor se nepodarilo otevrit!!\n"); return 1; } while((c = getc(fr)) != EOF) { if(c >= '0' && c <= '9') { poleb[a] = c; a = a + 1; } else { if(poleb[0] != '\0' && a != 0) { //plati pokud je v poli znak a a nesmi byt 0 polea[b] = atoi(poleb); for(d = 0; d <= 11; d++) { poleb[d] = '\0'; } a = 0; b = b + 1; } } } if(poleb[0] != '\0') { polea[b] = atoi(poleb); }

    if(fclose(fr) == EOF) { printf("Soubor se nepodarilo zavrit!!\n"); return 1; }

    for(d = 0; d < b; d++) { printf("%d. vysledne cislo: %d\n", d+1, polea[d]); soucet = soucet + polea[d]; }

    printf("Soucet: %d", soucet);

    return EXIT_SUCCESS; }

    Tady konkrétně nerozumím proč v tom programu má být

    for(d = 0; d <= 11; d++) {
                        poleb[d] = '\0';
                    }
    

    Proč ten nulový znak(ukončení řetezce) má být za každým znakem? ukončuje se celý řetězec ne? proč 11x?

    a potom
     if(poleb[0] != '\0') {
            polea[b] = atoi(poleb);
        }
    

    Odpovědi

    4.3.2020 23:08 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    nevím jak ten text uspořádat aby se v tom dalo orientovat
    Max avatar 4.3.2020 23:09 Max | skóre: 73 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Opraveno.
    Zdar Max
    Měl jsem sen ... :(
    4.3.2020 23:13 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Jen si mi přehodil ty texty k tomu kodu :D ten horní text má být kté spodní části kodu
    Max avatar 5.3.2020 12:14 Max | skóre: 73 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Nic jsem nepřehodil. Jen jsem zvýraznil kód, nic víc.
    Zdar Max
    Měl jsem sen ... :(
    4.3.2020 23:34 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C

    První problém je chybějící kontext, takže budu předpokládat, že jste dostal cizí program a snažíte se přijít na to, co dělá. Odpověď je, že přečte vstupní soubor, vytahá z něj souvislé posloupnosti číslic, převede je na čísla, ta čísla vypíše a sečte.

    Co se týká těch dvou fragmentů, tak první prostě vyplní poleb nulovými znaky, než do něj začne načítat další posloupnost číslic. Tenhle krok byste si samozřejmě mohl odpustit, pokud byste před převodem (tj. při první nečíslici nebo na konci souboru, pokud končil číslicí) ten nulový znak na konec připsal.

    Druhý fragment převede poslední posloupnost číslic v případě, že za ní nebyl jiný znak, ale sahala až do konce souboru. Tady je ale chyba, protože autor zapomněl inkrementovat b, takže to poslední číslo se v takovém případě nevypíše a nezapočítá do součtu.

    Těch chyb je tam víc, např. chybí kontrola, že posloupnost číslic nemá víc než 10 znaků (má-li 11, předáte atoi() neukončený řetězec, má-li víc, přeteče vám to už při zápisu do poleb). Stejně tak chybí kontrola, že těch čísel tam není víc než 11 (jinak přeteče polea). A pokud soubor bude začínat něčím jiným než číslicí, máte tam čtení z neinicializovaného poleb[0]. V kontrastu s tím působí úsměvně snaha pečlivě ošetřit a nahlásit selhání fclose(), což je vysoce nepravděpodobný scénář, stejně s tím nic nenaděláte, stejně se soubor nakonec zavře při ukončení programu a protože byl otevřený pro čtení, nebude to ani ničemu vadit.

    Další problém je

      while((c = getc(fr)) != EOF)
    

    kde c je char a ne int. Při troše štěstí to možná fungovat bude, ale i pak to bude hodně záviset na konkrétní verzi překladače a libc (a nejspíš i architektuře).

    4.3.2020 23:42 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Tak ty znaky se pak převedou na hodnoty pomocí atoi a hodí se do pole int jako funguje m ito
    4.3.2020 23:51 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C

    Jestli mluvíte o tom chybějícím b++ tak problém není v tom, že by se číslice nepřevedly a neuložily, ale v tom, že neaktualizujete proměnnou b, kde máte počet prvků polea (mimochodem, a pro počet prvků poleb a b pro počet prvků polea je opravdu vynalézavé), takže následující smyčka to poslední číslo nezpracuje.

    Samozřejmě to ale nastane jen v případě, že máte číslice opravdu až na konci souboru, ne pokud za nimi bude ještě např. newline ('\n').
    5.3.2020 00:04 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    jj takze tam stačí pred převod hodit jen poleb[a]=ˇ\0ˇ
    5.3.2020 00:40 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    a jak to mám udělat aby to poslední číslo zpracovalo?
    5.3.2020 07:22 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C

    Nejjednodušší je prostě navíc inkrementovat b, např.

    if (poleb[0] == '\0') {
            polea[b] = atoi(poleb);
            b++;
    }
    

    což bych asi spíš přepsal

    if (!poleb[0])
            polea[b++] = atoi(poleb);
    

    ale to už by asi bylo lepší to celé přepsat úplně od základu. Např. ani jedno z těch polí ve skutečnosti není potřeba (tím odpadnou i problémy s nehlídaným přetečením), open coding věci jako isdigit() nebo memset() vede jen k horší čitelnosti a zvyšuje riziko chyb atd. Podle těch podivných jmen proměnných to ale skoro vypadá, jako by nečitelnost byla cílem.

    5.3.2020 00:42 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Při troše štěstí to možná fungovat bude, ale i pak to bude hodně záviset na konkrétní verzi překladače a libc (a nejspíš i architektuře).

    Celkem bez závislosti na libc a překladači a architektuře to prostě selže, pokud v souboru bude byte 0xff. (Pravda, teoreticky by mohlo být EOF != -1, ale to by bylo hodně překvapivé. Navíc by to chybu neodstranilo, protože by se ten EOF prostě „převedl“ (poněkud ztrátově) zase na jiný specifický char, který by se pak mylně pokládal za konec souboru.)

    Zkrátka, tohle bude mylně považovat byte s hodnotou 0xff (255, bráno bez znaménka, nebo -1, bráno se znaménkem) za konec souboru, protože obvykle EOF == -1 a char je znaménkový.

    Že getc() vrací int, nikoliv char, k tomu je přesně tenhle důvod.

    char c: byte 0xff bude -1 (== EOF)
    int c: byte 0xff bude 255 (!= EOF)

    5.3.2020 01:13 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    vsak d < b //indexuje se od 0.. co je na tom blbě? kdyz bude 6 prvku d<6 je to ok
    5.3.2020 09:10 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C

    Tady je řeč o něčem jiném: o testu konce souboru. Funkce getchar() vrací int (a ne char) právě proto, aby bylo možné mít speciální hodnotu pro EOF, která se liší od toho, co getchar() vrátí pro kterýkoli skutečný znak (nebo spíš byte).

    Pokud ještě před testem na EOF návratovou hodnotu převedete na char, EOF se nutně převede na stejnou hodnotu jako některý skutečný byte, který se v souboru může vyskytnout. V závislosti na tom, jak napíšete to porovnání, a na implementaci getchar(), char a EOF pak buď budete mít byte, který (pokud se v souboru vyskytne) vyhodnotíte jako konec, nebo nepoznáte ten skutečný EOF.

    5.3.2020 08:26 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C
    protože obvykle EOF == -1 a char je znaménkový

    Tohle je právě to uvažování, kterému je lepší se vyhnout. Na jedné straně sice opravdu obskurních prostředí ubývá, ale na druhé mají moderní překladače tendenci využívat k agresivním optimalizacím i toho, že něco je ve specifikaci uvedeno jako undefined behavior. Někde jsem narazil na příklad, že smyčku

            int i;
    
            for (i = 1; i; i++) {
                    ...
            }
    

    může takový překladač úplně vyhodit, protože chování při přetečení je u unsigned typů undefined behavior. A může to udělat i překladač, který jinak int a operace s ním implementuje tím obvyklým způsobem, při kterém se to na tu nulu nakonec dostane. (Aktuální gcc to nedělá, aspoň ne defaultně, ale při zapnuté optimalizaci už vyhodí warning.)

    Osobně char používám jen tam, kde prvky opravdu chci chápat jako znaky; pokud s nimi chci pracovat jako s čísly, pak raději uint8_t a int8_t (resp. u8 a s8).

    6.3.2020 14:18 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prace se souborem C
    protože obvykle EOF == -1 a char je znaménkový

    Tohle je právě to uvažování, kterému je lepší se vyhnout.

    Není vůbec nic špatného na úvaze, co například může být EOF a co může vzniknout jeho konverzí na char. Špatné by bylo počítat automaticky s tím, že EOF je -1, což ale nikde neradím. Naopak říkám, že bez ohledu na definici EOF to nebude nikdy správně fungovat. Kterýkoliv byte vzniklý konverzí EOF na char (ať už to bude 0xff nebo jiný) bude chybně považovaný za konec souboru.

    ❗Červivý Hřib krade❗ avatar 6.3.2020 14:49 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    proč jako používat čísílka když už jako máme definovaný tamto makro eof :O :D

    joa taky je tam jako někde taková ta funkcička feof ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    6.3.2020 18:11 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Prace se souborem C
    proč jako používat čísílka když už jako máme definovaný tamto makro eof :O :D

    Nikdo v celém tomto vlákně nenavrhoval, ba ani nenaznačoval, že by se někde měla "používat" nějaká čísla. Pak je otázka, na co vlastně reaguješ.

    joa taky je tam jako někde taková ta funkcička feof ;D

    Což může být fajn, když čtu víc souborů najednou a chci se později podívat, které už jsem dočetl. (Třeba příkaz paste by něco takového mohl s výhodou použít.) Nicméně pro jeden soubor čtený v jednom cyklu [tento případ] je overkill volat po každém znaku feof(). Stačí brát z fgetc() správný návratový typ (int) a EOF se pak nebude rovnat žádnému jednomu bytu.

    ❗Červivý Hřib krade❗ avatar 7.3.2020 13:28 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    sorry sem to jenom přelítla vočima a vidim eof==-1 :O :O ;D

    co se jako týká tý feof tak jsem jako myslela že se jako řeší nějakej paranoidní scénář kdy se nějak nedá jakoby 100% spolehnout jenom na eof a nato se fukncička feof hodí protože vona nekouká na znak eof vona kouká o malililinkaťoučkej kousíček dál hele :O :O :O :O ;D

    The function feof() is used to check the end of file after EOF. It tests the end of file indicator. It returns non-zero value if successful otherwise, zero.

    ale jako žeto je pro dooyerův domácák overkill toje jako jasný ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    Jendа avatar 6.3.2020 23:43 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Prace se souborem C
    chování při přetečení je u unsigned typů undefined behavior
    Signed, ne? U unsigned to legálně přeteče na nulu.
    6.3.2020 23:53 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Ano. Jak jsem tu větu přeformuloval, zůstalo tam něco jiného než mělo.
    4.3.2020 23:37 Dooyer
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Jako program mi funguje i bez

    if(poleb[0] != '\0') { polea[b] = atoi(poleb); }
    ❗Červivý Hřib krade❗ avatar 5.3.2020 07:50 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    todleto tam je jako uplně nahouby však ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    ❗Červivý Hřib krade❗ avatar 5.3.2020 07:53 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    taky tam jako neni vošetřený přetečení proměný když ty čísla budou moc velký ;D

    1. vysledne cislo: 1234567680
    2. vysledne cislo: 1234585655
    3. vysledne cislo: 371679162
    4. vysledne cislo: 1360599260
    5. vysledne cislo: 454554
    6. vysledne cislo: 555
    7. vysledne cislo: 4545445
    Soucet: -88534985
    
    ale teď už jako fakt musim běžet :O :'(
    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    ❗Červivý Hřib krade❗ avatar 5.3.2020 13:42 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    mý řešení dooyerova domácáku :D :D

    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <limits.h>
    
    int main ( void )
    {
    
        //soubor
        FILE * fr=NULL;
    
        //přečtenej řádek ze souboru
        char * radek = NULL;
    
        //velikost bufferu kterej si alokuje getline pro čtení řádku
        size_t velikostBufferu = 0;
    
        //kolik jako sme přečetli znaků :O
        //to ssize je jakoby signed size_t takže muže bejt záporná :O :O
        ssize_t read;
    
        //sem si to jako budeme sčítat všecko
        long suma=0;
    
    
        if ( ( fr = fopen ( "input.txt","r" ) ) == NULL ) {
            fprintf ( stderr,"Soubor se nepodarilo otevrit!!\n" );
            exit ( EXIT_FAILURE );
        }
    
        //budem číst soubor řádek po řádečku ;D
        //getline přečte řádek do proměný radek
        //pokud to nepude vrátí -1
        //třeba když jako máme to EOF
        //víc o getline tady https://linux.die.net/man/3/getline
        while ( ( read = getline ( &radek, &velikostBufferu, fr ) ) != -1 ) {
    
            printf ( "zpracovava se retezec: %s",radek );
    
            //tady jako dost dobře mužem předpokládat nějakou hezkou chybku
            //proměná errno z errno.h drží číslo poslední chyby
            //vynulujem jestli tam už něco bylo předem
            //nulička znamená jako dobrý žádná chyba ;D
            errno=0;
    
            //teďko si to převedem funkcí strtol na číslo ;D
            //https://linux.die.net/man/3/strtol
            //první argument je řetězec znaků
            //druhej je takovej endptr ten drží první nečíselnej znak na kterej funkce narazí. pokud obsahuje vstupní string tak sme jako nenašli žádný čísla!!!! :O :O
            //posledním argumentem nastavujem aby to jako počítalo s číslem v desítkový soustavě ;D
            char * endptr;
            long hodnota = strtol ( radek, &endptr, 10 );
    
    
            //kouknem do proměný errno jestli se nám to jako povedlo
            //kódový číslo ERANGE řiká že hodnota je jako mimo povolenej rosach
            if ( ( errno == ERANGE && ( hodnota == LONG_MAX || hodnota == LONG_MIN ) ) ) {
                //perror ( "strtol" ); //profík by použil perror ;D
                //hele https://linux.die.net/man/3/perror
                fprintf ( stderr, "out of range chyba!!!!\n" );
                exit ( EXIT_FAILURE );
            } 
            //tady budem chytat tak nějak obecně :D
            else if ( errno != 0 && hodnota == 0 ) {
                fprintf ( stderr, "chyba!!!!\n" );
                exit ( EXIT_FAILURE );
            }
    
            if ( endptr == radek ) {
                fprintf ( stderr, "zadny nalezeny cisla v stringu jako!!\n" );
                exit ( EXIT_FAILURE );
            }
    
            //a teď si jako přičtem hodnotu k sumě s tim že budem aspoň trošku hlídat overflow
            long origSuma=suma;
            suma+=hodnota;
            if ((hodnota>0 && origSuma>0 && suma<0)||(hodnota<0 && origSuma<0 && suma>0)) {
                fprintf ( stderr, "preteceni promeny suma jako!!\n" );
                exit ( EXIT_FAILURE );
            }
    
            //všecko vypišeme
            printf ( "hodnota: %ld\nvelikost bufferu: %zd\n(int)endptr: %d\nsuma: %ld\n\n",hodnota,velikostBufferu, ( int ) ( *endptr ),suma );
        }
    
        if ( radek ) {
            free ( radek );    //uklídíme po sobě paměť řádku
        }
    
    
        if ( fclose ( fr ) != 0 ) {
            fprintf ( stderr,"Soubor se nepodarilo zavrit!!\n" );
            exit ( EXIT_FAILURE );
        }
    
        printf ( "hotovo!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" );
    
        return EXIT_SUCCESS;
    }
    

    a jako s pravdou ven že se potobě chce sčítat ty dlouhatatánský  člísla ve stringzích pod sebe?? ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    5.3.2020 15:36 _
    Rozbalit Rozbalit vše Re: Prace se souborem C
    No když už nic jinýho, tak jsme si dokázali že Gréta není Bystroushaak, ten by strachem před céčkem zalezl pod postel, popř. by sesmolil hnus, velebnosti.
    ❗Červivý Hřib krade❗ avatar 6.3.2020 14:37 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    třeba jako sem zalezlá pod postelí a strašně se snažim nesesmolit hnus :O :O :D :D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    9.3.2020 23:56 Franta
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Zdarec Miriam
    ❗Červivý Hřib krade❗ avatar 10.3.2020 10:43 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    sem si tu miriam jenom pučila na dělání bordýlku jinak jako vo ni vim asi tolik co ty vo mě :O ;D

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪
    10.3.2020 00:03 Franta
    Rozbalit Rozbalit vše Re: Prace se souborem C
    Ta kontrola preteceni a podteceni sumy je spatne, dochazi tu k UB a muze to smazat disk.
    ❗Červivý Hřib krade❗ avatar 10.3.2020 10:40 ❗Červivý Hřib krade❗ | skóre: 43 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Prace se souborem C

    na disku mam zatim ještě všecko tak nevim :D :D

    ale jako máš pravdu stim undefined behavior lepší je tomu overflow jakoby předejít než koukat jestli se jako stalo tááákže

    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    
    int add ( long * k_cemu,const long a_co_jako )
    {
        if ( ( *k_cemu>0 && a_co_jako>LONG_MAX-*k_cemu ) || ( *k_cemu<0 && a_co_jako<LONG_MIN-*k_cemu ) ) {
            fprintf ( stderr,"pozor!!!!!!!!\nscitat %ld a %ld nebudu jako!!!!\nbylo by overflow/underflow!!!!!!!!\n",*k_cemu,a_c>
                      return EXIT_FAILURE;
        } else {
            *k_cemu+=a_co_jako;
        }
        return EXIT_SUCCESS;
    }
    
    int main ( void )
    {
        const long skoroMAX=LONG_MAX-1;
        const long minusSkoroMAX=LONG_MIN+1;
        long sum=0;
    
        while ( add ( &sum,skoroMAX ) !=EXIT_FAILURE ) {
            printf ( "sum: %ld\n" );
        }
        sum=0;
        while ( add ( &sum,minusSkoroMAX ) !=EXIT_FAILURE ) {
            printf ( "sum: %ld\n" );
        }
    
        return 0;
    }
    

    jo a je takový zajímavý že u unsigned se to muže dělat něco takovýho u unsigned ub neni :O :O :O :O

    Pamatujete, jak Medvěděv chtěl hodit atomovku na Berlín? Tak teďko by se to hele šiklo 💥☢️🤪

    Založit nové vlákno • Nahoru

    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.