strcpy() -Segmentation fault

Sekcia: Programovanie 16.07.2007 | 23:57
Avatar hafik Slackware 10.2  Používateľ
Pri spusteni mnou napisaneho (jazyk C) programu sa vypise "Segmentation fault (core dumped)".
Pri debugovani som zistil ze chyba je v:

strcpy(obsah_suboru[*pocet_riadkov - 1], riadok);
pricom: obsah_suboru je dvojrozmerne dynamycke pole (char **obsah_suboru)
pamat je alokovana pre obydva rozmery pola pre velkost statickeho pola riadok.
Riadok je jednorozmerne staticke pole

Prave sa ucim programovat v c. Nevie niekdo pomoct? Sedim nad tym od rana a neviem sa pohnut dalej. Dakujem.

Este nieco: Skusal som funkciu strcpy() sahradit vlastnou (obycajne kopirojanie po znakoch).
Vysledok bol taky isty.
    • Re: strcpy() -Segmentation fault 17.07.2007 | 00:09
      Avatar Miroslav Bendík Gentoo  Administrátor
      Je pocet_riadkov pointer?
      • Re: strcpy() -Segmentation fault 17.07.2007 | 00:14
        Avatar hafik Slackware 10.2  Používateľ
        Ano, je.
    • Re: strcpy() -Segmentation fault 17.07.2007 | 00:40
      Avatar nardew debian  Používateľ
      pravdepodobne niekde zapisujes mimo pamat.. plati ze to co je v obsah_suboru[*pocet_riadkov - 1] sa zmesti do riadok?
      • Re: strcpy() -Segmentation fault 17.07.2007 | 00:50
        Avatar hafik Slackware 10.2  Používateľ
        To co je v riadok to sa zmesti do obsah_suboru(*pocet_riadkov - 1]. Tu pamat sa pokusim este raz prekontrolovat.
    • Re: strcpy() -Segmentation fault 17.07.2007 | 00:59
      Avatar borg Arch, Debian jessie  Administrátor
      strncpy je asi tazsie pouzit ako strcpy, ze? vyraz *pocet_riadkov - 1 dava spravnu hodnotu? problem to spustit cez gdb a debugovat to?
      • Re: strcpy() -Segmentation fault 17.07.2007 | 01:16
        Avatar hafik Slackware 10.2  Používateľ
        Na zaciatku som spomenul ze miesto chyby som nasiel debugovanim.
        Ja potrebujem prekopirovat cele pole riadok do dvojrozmerneho pola obsah suboru.

        obsah_suboru[*pocet_riadkov - 1] obsahuje ukazovatel na (alokovane) pole o velkosti strlen(riadok).

        Vyraz *pocet_riadkov - 1 ukazuje na najnovsie alokovany riadok pola **obsah_suboru.
        • Re: strcpy() -Segmentation fault 17.07.2007 | 01:20
          Avatar borg Arch, Debian jessie  Administrátor
          ako hovorim man strcpy, man strlen.
          • Re: strcpy() -Segmentation fault 17.07.2007 | 01:25
            Avatar borg Arch, Debian jessie  Administrátor
            strlen vracia dlzku retazca bez ukoncovacieho znaku ('\0'), strcpy kopiruje zdrojovy buffer do cieloveho vratane nuloveho znaku.
    • Re: strcpy() -Segmentation fault 17.07.2007 | 01:04
      Avatar uid0 Debian  Používateľ
      hlavne dynamicke pole bude tazko suvisla cast pamati
      Debian. apt-get into it…
      • Re: strcpy() -Segmentation fault 17.07.2007 | 01:07
        Avatar borg Arch, Debian jessie  Administrátor
        lol a tym si co chcel povedat?
        • Re: strcpy() -Segmentation fault 17.07.2007 | 01:15
          Avatar uid0 Debian  Používateľ
          ze chyba nie je v strcpy ale v sposobe akym sa snazi pristupit k pamati mojko. segfault, vies?
          Debian. apt-get into it…
          • Re: strcpy() -Segmentation fault 17.07.2007 | 01:22
            Avatar hafik Slackware 10.2  Používateľ
            Pamet druheho rojmeru by mala ist za sebou.
            Napriklad:
            obsah_suboru[0][0] za tym obsah_suboru[0][1] za tym obsah_suboru[0][2] atd.
            • Re: strcpy() -Segmentation fault 17.07.2007 | 01:32
              Avatar uid0 Debian  Používateľ
              dereferencujes? gdb je ti iste napomocnejsi nez my
              Debian. apt-get into it…
          • Re: strcpy() -Segmentation fault 17.07.2007 | 01:22
            Avatar borg Arch, Debian jessie  Administrátor
            pristupuje k pamati ok, cica.
            • Re: strcpy() -Segmentation fault 17.07.2007 | 01:29
              Avatar uid0 Debian  Používateľ
              to hovor tomu segfaultu...
              Debian. apt-get into it…
              • Re: strcpy() -Segmentation fault 17.07.2007 | 01:32
                Avatar borg Arch, Debian jessie  Administrátor
                preco? vsak z tej odpovede mi to znelo, ze si cica...

                btw napisal som si pravdepodobne rovnaky program, ktory pravdepodobne rovnako ako on pristupuje v pamati, vsetko ok, ziadny segfault, cica
                • Re: strcpy() -Segmentation fault 17.07.2007 | 01:34
                  Avatar uid0 Debian  Používateľ
                  je mi uplne jedno ako ma nazyvas, tvoj nazor na spravnost pristupu hovor segfaultu, kernelu, libc a v neposlednom rade VM unit.
                  Debian. apt-get into it…
                  • Re: strcpy() -Segmentation fault 17.07.2007 | 01:36
                    Avatar borg Arch, Debian jessie  Administrátor
                    ja na svojom nazore nevidim nic zle ;) ja som si to overil, tak tvoje teoretizovanie je mi vies kde
                    • Re: strcpy() -Segmentation fault 17.07.2007 | 01:38
                      Avatar uid0 Debian  Používateľ
                      ty si si overil ci to ty vies. on to ma zle a navyse uviedol chaby popis miesto test case. ja o tom viem zatial hovno, ty si overuj co chces.
                      Debian. apt-get into it…
                      • Re: strcpy() -Segmentation fault 17.07.2007 | 01:43
                        Avatar borg Arch, Debian jessie  Administrátor
                        aj si budem overovat co chcem ;)