Egyszerű C file i/o

Kezdőlap Fórumok Programozás Egyszerű C file i/o

7 bejegyzés megtekintése - 21-27 / 27
  • Szerző
    Bejegyzés
  • #2125036
    vargadanis
    Felhasználó

      hali!
      koszi a valaszokat… meg tudom hatarozni egy pointer erteket? Marmint szeretnem, ha a pointer a 134521821 -ra mutatna.
      A file 134521200 – nal kezdodik es egeszen 134521200+filesizeig tart. Nah most a legegszerubben szerintem ugy tudom vizsgalni egy pointert megelozo, vagy utana levo karaktert, ha letrehozok egy masik pointert, ami arra a memoriateruletre mutat. szted ez nagy hulyeseg?
      Pl:
          def = strstr(buff, „defaulttt0”);
          for(i=0; i<15; i++){
        printf(„%dn”, (int)def);
          }
      ez a kov. 15 karakter ASCII kodjat adja ki. utana, h az most mi, mar egyszeru lesz kezelni.

      #2125037
      vargadanis
      Felhasználó

        hali!
        koszi a valaszokat… meg tudom hatarozni egy pointer erteket? Marmint szeretnem, ha a pointer a 134521821 -ra mutatna.
        A file 134521200 – nal kezdodik es egeszen 134521200+filesizeig tart. Nah most a legegszerubben szerintem ugy tudom vizsgalni egy pointert megelozo, vagy utana levo karaktert, ha letrehozok egy masik pointert, ami arra a memoriateruletre mutat. szted ez nagy hulyeseg?
        Pl:
            def = strstr(buff, „defaulttt0”);
            for(i=0; i<15; i++){
          printf(„%dn”, (int)def);
            }
        ez a kov. 15 karakter ASCII kodjat adja ki. utana, h az most mi, mar egyszeru lesz kezelni.

        #2125038
        pointux
        Felhasználó

          Nem értem teljesen, hogy miről beszélsz, de a keresést valahogy így érdemes csinálni:

          Code:
          int i = 0;
          substr [ 0 ] = buf;
          do {
              substr [ i ] = strstr ( substr [ i ] , needl );
              i ++;
              substr [ i ] += strlen ( needl );
          } while ( substr [ i – 1 ] != NULL );
          Code:
          int i = 0;
          buf2 = buf;
          do {
              substr [ i ] = strstr ( buf2 , needl );
              i ++;
              buf2 += strlen ( needl );
          } while ( substr [ i – 1 ] != NULL );

          Na, ha minden igaz ez után substr (mutató tömb) tartalmazni fogja az összes needl (karakterlánc) előfordulási helyét egy ”-val lezárva. (Mintha egy karakterlánc lenne… csak itt az adatok 32 bitesek lesznek, nem 8 bitesek…)

          #2125039
          pointux
          Felhasználó

            Nem értem teljesen, hogy miről beszélsz, de a keresést valahogy így érdemes csinálni:

            Code:
            int i = 0;
            substr [ 0 ] = buf;
            do {
                substr [ i ] = strstr ( substr [ i ] , needl );
                i ++;
                substr [ i ] += strlen ( needl );
            } while ( substr [ i – 1 ] != NULL );
            Code:
            int i = 0;
            buf2 = buf;
            do {
                substr [ i ] = strstr ( buf2 , needl );
                i ++;
                buf2 += strlen ( needl );
            } while ( substr [ i – 1 ] != NULL );

            Na, ha minden igaz ez után substr (mutató tömb) tartalmazni fogja az összes needl (karakterlánc) előfordulási helyét egy ”-val lezárva. (Mintha egy karakterlánc lenne… csak itt az adatok 32 bitesek lesznek, nem 8 bitesek…)

            #2125040
            vargadanis
            Felhasználó

              ez megoldotta a bajom. (^_^)

              #2125041
              vargadanis
              Felhasználó

                ez megoldotta a bajom. (^_^)

                #1886820
                csaba
                Felhasználó

                  Hali!

                  Megyűlt a bajom egy file beolvasásával, majd tartalmának kiiratásával. Itt a kód:

                  Code:
                  #include
                  #include

                  int main(int argc, char *argv[])
                  {
                      FILE *fp;
                      fp = fopen(„/boot/grub/menu.lst”, „r”);
                      char *line;
                      line = malloc(128);
                      int i;
                      if(fp == NULL)
                      {
                    printf(„Could not open the file!n”);
                      }else
                      {
                    printf(„File opened for input”);
                    while(!feof(fp))
                    {
                    fgets(line, 128, fp);
                    for(i = 0; i < 128; i++ ) printf("%c", line[i]);   }     }     fclose(fp);     return 0; }

                  Ha nem így akkor hogyan oldjam meg a dolgot? Se warning, se error nincsen és még valamit ki is ír, de az osszevisszaság:

                    Other operating systems:
                  arate the menu items below from the Debian
                  112bc04cd ro single
                  lash

                  ot
                    Other operating systems:
                  arate the menu items below from the Debian
                  112bc04cd ro single
                  lash

                  ot
                    Other operating systems:
                  arate the menu items below from the Debian
                  112bc04cd ro single
                  lash
                  # This entry automatically added by the Debian installer for a non-linux OS
                  112bc04cd ro single
                  lash
                  # on /dev/hda3
                  omatically added by the Debian installer for a non-linux OS
                  112bc04cd ro single

                  meg ilyenek.
                  Az előző alkalommal, csak egy char tömbböt használtam, ami 128bytos volt. Beolvastam a dolgokat és akkor még szarabb volt a dolog, mert a szemét a memóriában is kijött. A malloc legalább azt megoldja.

                  Dani

                7 bejegyzés megtekintése - 21-27 / 27
                • Be kell jelentkezni a hozzászóláshoz.