NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: nahardzanie preddefinovanich slov v subore jayzkom C

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
3012
Člen
Avatar
3012:3.5.2020 1:15
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
        //zakladne nastavenie okna
        system ("color f0");
        printf("nahradzac/prekladac\n");

        // vypita si cestu k suboru 1
        char cesta1[500];
    printf("cesta k suboru 1: ");
    scanf("%s", cesta1);

        // vypita si cestu k suboru 2
        char cesta1[500];
    printf("cesta k suboru 2: ");
    scanf("%s", cesta2);

        printf("\n"); //odriadkovanie

        //citanie suboru

    FILE * soubor = fopen(cesta1, "r");
    if (soubor == NULL) //osetrenie chyby otvarania
    {
        printf("Soubor sa nepodarilo otevorit pre citanie, zkontrolujte prosim ci existuje.");
                printf("\n"); //odriadkovanie
                return 1;
    }

    char buffer[1024];
    while (fscanf(soubor, " %1023[^\n]", buffer) != EOF) //citanie riadkov suboru
    {
                char riadok[] = "";

                // vracia jedno slovo z riadku kodu
                char *slovo = strtok(buffer, " ");

                //cita riadok kim nenarazi na jeho koniec
                while (slovo != NULL)
                        {

                        //podmienka ktora nahradza slova suboru2 slovami suboru1
                        if (strcmp(slovo, "pes") == 0)
                                {
                                slovo = "dog";
                        }
                        else if (strcmp(slovo, "macka") == 0)
                                {
                                slovo = "cat";
                        }
                        else //ak nenajde alternativu prikazu opise slovo zo suboru2
                                {
                        }

                        strcat(riadok, slovo);

                        strcat(riadok, " ");

                        slovo = strtok(NULL, " "); //TU JE asi CHYBA

        }


printf(riadok);

        printf("\n"); //odriadkovanie
        printf("\n"); //odriadkovanie


    if (fclose(soubor) == EOF) //osetrenie chyby uzatvarania
    {
        printf("Soubor se nepodarilo uzavriet.");
                printf("\n"); //odriadkovanie
        return 1;
    }

        //hlasenie potvrdi ze bol preklad uspesny
        printf("subor1: %s bol prelozeny do suboru2: %s\n", cesta1, cesta2);

        printf("\n"); //odriadkovanie

        return 0;

        }
        }

Zkusil jsem: Dobry vecer tu je kompletny kod mojej applikacie, ma precitat jeden subor a vztvorit druhz subor v ktorom prepise vsetky preddefinovane slova inimy slovamy, a tie ktore nepozna ponecha tak ako su, uz som mal naprogramovany vypis preloyeneho textu do konzole, ale ked som sa pokusal, pridat zapis tohoto textu do suboru, doslo k tomu, 6e do suboru yapisal len jedine prve slovo, zmazal som preto celi kod yapzsu do suboru ale asi aj nieco co som nemal a teray vzpisuje do konzole iba prvz riadok - vzynacil som kde je pravdepodobne chzba ale nejde odstranit ani nahradenim null slovom riadok, ani slovo, neviem si spomenut ako to bolo predt7m a nechcem celu app pisat nanovo. chcel bz som vas teda poziadat o pomoc s riesenim, a ano printf(riadok); som skusal posuvat a teray bz mal bzti v spravnom obore platnosti a mal bz prebehnut vydz s ciklom ktorz cita subor, pri kaydom riadku. netusim ako soom to mal predtim a bol bz som rad ak bz ste mi pomohli vloyit tam aj kod pre yapis do suboru, aby sa mi to ynova nepokazilo, dakujem za kazdu pomoc

 
Odpovědět
3.5.2020 1:15
Avatar
Odpovídá na 3012
Matúš Olejník:3.5.2020 1:54

Ahoj, vždy rád pomôžem, ale keď vidím takto odfláknutú žiadosť o pomoc tak sa momentálne zmôžem len na okomentovanie tohto tu.

Ja keď niekde píšem a duplom ak chcem od niekoho pomôcť tak si prečítam minimálne 2 krát čo vôbec píšem a najskôr sa snažím vyskúšať všetko čo je v mojich silách. Tu je vidieť, že v sekunde kedy sa ti niečo pokazilo stlačil si Ctrl A, Ctrl C a Ctrl V, klávesnicu z angličtiny si sa ani neobťažoval prepnúť a je ti úplne jedno že ten kto ti chce pomôcť sa navyše bude trápiť s dekódovaním toho čo vlastne chceš.

Rovnako keď si vraj mal všetko nakódené a niečo sa ti odrazu pos*alo tak predsa stlačím Ctrl Z a vykonané zmeny vrátim alebo už od začiatku používam Git alebo iný nástroj na verzie.

A asi tak nakoniec si tu nedávno https://www.itnetwork.cz/…ea433f72d0ed riešil licenčné podmienky javy kde vraj máš nakódenú alebo teda ideš kódiť svoju apku a licencia je posledná vec ktorá ti stojí v ceste. Ak je tá apka nakódená a menežuješ ju v tomto duchu tak si dávaj pozor ako by sa ti to mohlo celé vyvinúť a skončiť.

Editováno 3.5.2020 1:56
Nahoru Odpovědět
3.5.2020 1:54
/* I am not sure why this works but it fixes the problem */
Avatar
3012
Člen
Avatar
Odpovídá na Matúš Olejník
3012:3.5.2020 2:54

Ospravedlnujem sa za chyby, ano uznavam je to strašne, ako som to sem napísal, hanba my, mal som to napisat lepsie, moja chyba, potom co som to celi den programoval som uz dost unavený, a v čase kedy som to písal už my bolo jedno aku klavesnicu pouzivam a ako som to som to pisal (na windows neovladam vsetky klavesove skratky tak ako na macbooku a tak prepinam klavesnice). Prepáč. Prepíšem to. ale nečakam odpoveď (len chcem vysvetliť čo je vo veci). Čo sa týka ctrl Z tak to malo len obmedzený pocet stlaceni. A moja hlavná chyba bola že som mal určitu predstavu ako to malo fungovať, a chcel som to verzovať až potom čo dokoncim ten zapis do súboru. takze to skusim znova napísať tentokrát sa pokusim lepšie, ako som písal nečakam odpoved len to chcem napraviť, takže:
Snažil som sa naprogramovať app, ktora by precital zadany súbor a prepýsala ho do druhého súboru, s tým že by v ňom obmenila preddefinovane slová, a tie bez definicie by nechala nezmenene, výsledný text by sa zapísala zo zmenamy do druheho súboru.
ako som písal app už vypisovala preložený text a ked som sa ho pokusil zapísať, zapisovala len prvý riadok, preto som odstránil kód zapýsu, ktorý som mal ale dosť pomiešaný, zo zvyškom, pretoze som sa snazil prijsť na to ako ho prinúťiť zapiat vsetky riadky a tak som otvorenie suboru vlozil do ciklu ktory bol vyššie, uzavretie suboru som zas posunul nižšie, no aj tak to nebolo funkcne atak som to zmazal, ale asi som zmazal aj niečo čo som zmazat nemal. (počas tejto snahy prijst na to kde je problem som vsetky ctrl Z minul a uz sa to nedalo vrátiť)

P.S.
Čo sa týka tej Javy, tú applikaciu čo som mal v plane písať na nej som teraz začal robyť v C. ohladom tej licencie som si robil research, pretože mám z jazykmy nedavnu neprijemnu skusenosť kedy my microsoft odstrihol podporu visual basic.net na ktorom mam hotovu aj odladenu applikaciu a je mi to nanič, pretože ju musim kôli dlhodobej podpore prepisať a tak keďže som sa dopočul už dávno o tých licenčných podmienkach na jave robil som si research, predtým ako cokolvek zacnem robiť, lebo to VB.Net bola pre mňa dosť ťažká rana, a ja svoje chybi Neopakujem a tak som po dotaze na fore zhodnotil že Java pre mna nieje to prave. (na tej app som robil pol roka a navyše som si mesiac pred tým ako prislo vyjadrenie od microsoftu o VB na jej zabezpecenie som si uz na fore najal programatora ktory uz polku roboty urobil a ma tu polku zaplatenu, a tak ju chcem co najrichlejsie prepisat do ineho jazyka ktorý viem pouzivat s tým že žiaden neviem tak dobre ako VB - cize zas robim chyby(aby bola co najskor distribuovatelna))

len som chcel aby si vedel co je vo veci a aka je moja situacia (a tak proste robým teraz chyby a nesustredim sa tak aso obvikle)

 
Nahoru Odpovědět
3.5.2020 2:54
Avatar
3012
Člen
Avatar
3012:3.5.2020 3:01

ester's raz sa ospravedlnujem, nemislel som to zle

 
Nahoru Odpovědět
3.5.2020 3:01
Avatar
DarkCoder
Člen
Avatar
Odpovídá na 3012
DarkCoder:3.5.2020 3:27

Je chybně definovat pole neurčené velikosti a chtít jej rozšiřovat. Když se inicializuje znakové pole neurčené velikosti, spočítá překladač počet znaků v poli sám a tuto hodnotu použije jako velikost pole. Null znak ukončující řetězec se do velikosti pole započítává.

Následující úryvek kódu způsobí chybu na druhém řádku:

char riadok[] = ""; // pole má velikost 1.
strcat(riadok, "dog"); // nelze překročit velikost pole - CHYBA!
Nahoru Odpovědět
3.5.2020 3:27
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
3012
Člen
Avatar
Odpovídá na DarkCoder
3012:3.5.2020 11:56

dobre, ďakujem, a ako sa prosím dá polu, nastavit moznost mat neobmedzeny pocet prvkov, vieš ja neviem kolko prvkov bude to pole mať

 
Nahoru Odpovědět
3.5.2020 11:56
Avatar
DarkCoder
Člen
Avatar
Odpovídá na 3012
DarkCoder:3.5.2020 13:10

Pokud se dopředu neví jak velké pole by mělo být, pak se využívají různé techniky jako jsou abstraktní datové struktury (např. jednosměrný seznam). Nebo můžeš vytvořit pole dynamicky a jeho velikost měnit za běhu, popř. v mnoha běžných případech stačí deklarovat pole "rozumné" délky. Nic Ti nebrání provést si analýzu vstupního souboru, pokud si to situace vyžaduje.

Nahoru Odpovědět
3.5.2020 13:10
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
3012
Člen
Avatar
3012:3.5.2020 14:20

dakujem skusim to

 
Nahoru Odpovědět
3.5.2020 14:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.