C-fejlesztés, KDevelop, stb…

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

10 bejegyzés megtekintése - 51-60 / 185
  • Szerző
    Bejegyzés
  • #1915593
    pointux
    Felhasználó

      Nos ebben a dzsungelben bármi lehet.
      Nem lehetne úgy csinálni, hogy ha ”-g beolvas mindent, aztán összehasonlítja a „” kifejezéssel strcmp szabványos függvénnyel, mert úgy nem lenne, annyi if, és a bõvíthetõsége is jobb lenne mert nem kellene ill. -ra sem másra új fügvényt írni.

      Különben nem tudom valószínû a while ciklusnak nincs vége.
      Azért is jó a fent említett módon csinálni, mert a kifejezést ki lehet printelni, hogy jól csinálta-e addig.

      #1915594
      zehyo
      Felhasználó

        Mivel kezdõ vagyok, így nem nagyon ismerek függvényeket…ha lennél olyan kedves leírni, hogy ezt kb hogy lehetnem megoldani, milyen függvényekkel. Köszönöm a válaszod.

        #1915595
        pointux
        Felhasználó

          Ez nincs tesztelve, ezért lehetnek benne hibák.
          De egy jó példa arra, hogyan tehetjük átláthatóvá a feladatot.

          Ez nem csinál mást, mint megkeresi a ‘stream’-be, a ‘str’ stringet.
          (1 a visszatérése, ha megtalálta, egyébként 0)

          int searchstr(char *str) {
          char *buf;
          do
          int i=0;
          while ((c = fgetc(stream)) != ”) {
          if (c == EOF) return 0;
          buf = c; // de közben berakja a buf-ba pl. a ‘strong’-ot
          }
          while (strcmp(buf, str)); //ha buf nem azonos str-rel keres tovább
          return 1;
          }

          Ezek után:
          if (searchstr(„strong”)) {
          // további kód
          }

          Csak áttekinthetõbb, nem?

          #1915596
          kelemengabor
          Felhasználó

            Javaslom, használd az elõttem szóló kódját, de oktatási célból a hibák, amiket elkövettél:
            while(betu=(getc(musor))!=EOF)
            Ez a getc visszatérési értékét hasonlítja EOf-fal, amit felvesz a betu nevû változó – nem ezt akartad
            helyesen : while((betu=(getc(musor)))!=EOF)
            if(betu=’<')
            Ez az = és == összekeverésének iskolapéldája.
            printf(„%s”,betu);
            Ez okozta a segfaultot. %c kell, az karaktert vár, a %s sztringet, aminek végén van. A betu végén ilyen ugye nincs, úgyhogy a printf szépen kiszaladt a saját memótiaterületérõl, a keresése közben.
            while(betu=(getc(musor))!=’<'){
            printf(„%s”,betu);
            }
            Ez meg végtelen ciklus, az = és == összekeverése+a másik while-nál mondottak miatt.

            #1915597
            kelemengabor
            Felhasználó

              Mivel kezdõ vagyok, így nem nagyon ismerek függvényeket…

              Javaslom beszerezni a Kernighan-Ritchie -féle ‘A c programozási nyelv’ címû alapmûvet, ha komolyan gondolod, hogy programozni akarsz c-ben (és ha megvan, akkor használni is 🙂 ).
              (hibalista itt 😀 )

              #1915598
              zehyo
              Felhasználó

                Nagyon szépen köszönöm a gyors és nagyban segítõ válaszokat 🙂
                vizsla kódja valóban áttekinthetõ, ám mivel a fájlban több strong is van, és tudnom kell, hogy mi van közötte, így a meglétének vizsgálata nem elég. Ezért egyenlõre kelemengabor írása segítségével írtam át a programot, ami mostmár mûködik. Ha az egész jó lesz, átgondolom ezt a dolgot mégegyszer, de addig nem akarom módosítani, mert ami mûködik, azt nem piszkálom 😀

                Még annyit áruljatok el plz, hogy egy neten levõ oldal forrását hogyan tudnám fájlba elmenteni, vagy rögtön a netrõl megnyitni.

                Köszi

                #1915599
                pointux
                Felhasználó

                  char **bufx;
                  int bpos = 0;

                  //Ez beolvassa a két közötti dolgokat bufx-be, amely stringeket tartalmaz
                  int getxstr(void)
                  {
                  int i;
                  while ((c = fgetc(stream)) != ‘<') {
                  bufx[bpos] = c;
                  if (c == EOF) return 0;
                  i++;
                  }
                  return 1;
                  }

                  //Ez meg végig vizsgálja a file-t
                  do
                  x = searchstr(„strong”);
                  if (x) getxstr();
                  bpos++;
                  while (x);

                  //Ezek után a bufx tartalmazza az összes olyan dolgot, ami neked kell.
                  //bpos mutatja, hogy hány darab

                  Ez szintén nincs kipróbálva, de írd át mert már gánya is!

                  Az internetes elérést még nem tudom.

                  #1915600
                  zehyo
                  Felhasználó

                    Megvan a mentés!
                    Konzolban van ilyen progi, hogy wget
                    ezzel le lehet menteni teljes oldalt így:
                    wget „http://cim&#8221;
                    és a c forrásba hasonlót lehet elérni (bár ezt még nem próbáltam, így:
                    system(„parancs”);
                    tehát így nézne ki:

                    system(„wget „http://cim”&#8221;);
                    csak ugye akkor itt torlódnak a ” jelek.
                    Ekkor ugye a belsõ kettõ elé kell egy-egy , nem?

                    #1915601
                    pointux
                    Felhasználó

                      Szerintem egyátalán nem kell a belsõ „, de ha mégis, akkor ” a jó.

                      #1915602
                      zehyo
                      Felhasználó

                        Kell, mert a cím php-s GET típusú, és ezért nem értelmezné végig, tehát ” jelek nélkül nem a megfelelõ oldalt szedné le

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