C-fejlesztés, KDevelop, stb…

Kezdőlap Fórumok Programozás C-fejlesztés, KDevelop, stb…

10 bejegyzés megtekintése - 101-110 / 185
  • Szerző
    Bejegyzés
  • #1915643
    kl223
    Felhasználó

      Ja, értem.
      Még nem vagyok túl járatos az ilyen jelölésekben, de most, hogy mondod, télleg így egyértelmû.

      kl223

      #1915644
      pointux
      Felhasználó

        Ez nem is szabványos, csak én találtam ki, mert úgy gondoltam logikus és egyszerûbb, mitha leírnám, hogy ez egy int típusú változó.

        #1915645
        kelemengabor
        Felhasználó

          Vagy esetleg nincs olyan gnu progi, amiben ez benne van, mert akkor kiollóznám belõle…
          kl223

          mplayer? 😀

          #1915646
          kl223
          Felhasználó

            Vagy esetleg nincs olyan gnu progi, amiben ez benne van, mert akkor kiollóznám belõle…
            kl223

            mplayer? 😀

            Ha nekem kiszeded az mplayer forrásából azt a fgv-t, ami az AVI fájlok FPS-ét megnézi, és átalakítod úgy, hogy a következõ formában legyen hívható (pl):

            double miAzFPS(char *fajlnev);

            Akkor megköszönöm neked… ;-))))

            Szerintem csak van vmi eccerûbb módszer, és az ezirányban elindított topicban (lsd az „FPS kiszedése az AVI-ból” c. topic) ajánlottak is egy pár egyszerûbbet.

            kl223

            #1915647
            kl223
            Felhasználó

              Más téma: adva van a következõ struktúra:

              Code:
              struct szoveg

              {

               char sz[250];

               struct szoveg *next;

              };

              Amint az látszik, ebbõl majd egy láncolt lista akar lenni. Nos, nézzük a kódot, ami feltölti a listát:

              Code:
              FILE *fopen(), *fp;

              char ch[250];

              struct szoveg *elso, *aktualis;

              … /* itt megnyitjuk a fájlt, stb. */

              aktualis = elso;

              while ( fgets( ch, 250, fp ) != NULL  )

              {

               aktualis = malloc( sizeof( struct szoveg ) );

               aktualis->sz = ch;

               aktualis = aktualis -> next; /* ez lenne itt a továbbcsatolás */  

              }

              fclose(fp);

              A fájlt BIZTOS, hogy megnyitja, mert tudok belõle olvasni, ha pl. beiktatok a cikluson belülre egy printf( ch ); parancsot, akkor kiírja a fájl tartalmát. A program egyébként hiba nélkül lefordul és lefut, de amikor ezután a kódrészlet után beírom ezt:

              Code:
              printf( elso -> szoveg );

              /* vagy ezt: */

              printf( elso -> next -> szoveg );

              Akkor szegmentálási hibával leáll.

              #1915648
              pointux
              Felhasználó

                Még csak rápillantottam, de a filenyitást lehet ellenõrizni:

                if (!(f = fopen(„x.txt”, „rt”))) {
                fprintf(stderr, „Nem sikerült megnyitni a filet”);
                exit(ERRORCODE)
                }

                #1915649
                pointux
                Felhasználó

                  while ( fgets( ch, 250, fp ) != NULL )
                  {
                  aktualis = malloc( sizeof( struct szoveg ) );
                  aktualis-]sz = ch;
                  aktualis = aktualis -] next; /* ez lenne itt a továbbcsatolás */
                  }

                  Elõször is, a malloc-kot a cikluson belül használtad, ami azt jelenti, hogy minden egyes alkalommal lefoglalsz egy új aktualist új címmel.

                  #1915650
                  kl223
                  Felhasználó

                    Szerintem nem fogyott el a memória, mert teszteltem, a ciklus közben a tárfoglalás után hibátlanul hozzáfértem a struktúrához, tehát lefoglalni lefoglalta.

                    Szerinted az az elsõ aktualis=elso az ott jó?

                    Meg ez: aktualis = aktualis -] next;

                    Ha kilépek a programból, felszabadul automatikusan a lefoglalt tárterület?

                    kl223

                    #1915651
                    pointux
                    Felhasználó

                      Ez pedig nem másolja át a stringet:
                      aktualis-]sz = ch

                      strcpy-t használj, vag közvetlenül rakd be az sz-be

                      Itt egy példa:
                      struct szoveg
                      {
                      char sz[250];
                      struct szoveg *next;
                      } aktualis;

                      fgets(aktualis.sz, 250, fp);

                      #1915652
                      pointux
                      Felhasználó

                        Szerintem nem fogyott el a memória, mert teszteltem, a ciklus közben a tárfoglalás után hibátlanul hozzáfértem a struktúrához, tehát lefoglalni lefoglalta.

                        Szerinted az az elsõ aktualis=elso az ott jó?

                        Meg ez: aktualis = aktualis -] next;

                        Ha kilépek a programból, felszabadul automatikusan a lefoglalt tárterület?

                        kl223

                        Azt hiszem igen, de jobb felszabadítani..

                      10 bejegyzés megtekintése - 101-110 / 185
                      • Be kell jelentkezni a hozzászóláshoz.