Zistenie ci je subor textovy v C

Sekcia: Programovanie 20.11.2010 | 00:58
janko111   Návštevník
Zdravim,

programujem v C skript na vypisanie vsetkych suborov, ktore su textove.

Mam naprogramovanu rekurzivnu funkciu na prehladania adresara,
vsetko funguje, len sa teraz neviem pohnut dalej.

Mam premennu cesta_k_suboru, a teraz by som chcel tuto cestu prehnat cez program file,
ktory v pripade textoveho subora vypise na konci slovo text. Viem ze treba pouzit nejako execlp,
lenze neviem ako a co s tym dalej. Trapim sa s tym uz velmi dlho. :(

Verim, ze tu budu nejaki odbornici, ktory mi to na praktickom priklade vysvetlia.

Budem ci to velmi cenit.

Vopred vdaka.

Jano.
    • Re: Zistenie ci je subor textovy v C 20.11.2010 | 01:59
      Avatar Dare_devil Debian, OpenSuse  Používateľ
      Nestaci toto?

      system("file subor.txt") ?
      There is no flag large enough to cover the shame of killing innocent people
      • Re: Zistenie ci je subor textovy v C 20.11.2010 | 02:56
        Avatar borg Fedora  Administrátor
        nestaci.

        skor nieco taketo z brucha:
        FILE *f;
        char cmd[256];
        sprintf(cmd, "file %s", NAZOV_SUBORU);
        f = popen(cmd, "r");
        char riadok[256];
        while (fgets(riadok, 256, f)) {
        //spracuj riadok
        }

        pclose(f);
        • Re: Zistenie ci je subor textovy v C 20.11.2010 | 03:03
          Avatar Dare_devil Debian, OpenSuse  Používateľ
          A nie je tu moznost nasmerovat vystup z volania funkcie system do klasickej stringovej premennej? To by bolo predsa ovela jednoduchsie.
          There is no flag large enough to cover the shame of killing innocent people
          • Re: Zistenie ci je subor textovy v C 20.11.2010 | 03:07
            Avatar borg Fedora  Administrátor
            neviem ako v php, ale man 3 system. navyse volanie system() sa nedoporucuje.
        • Re: Zistenie ci je subor textovy v C 20.11.2010 | 12:32
          janko111   Návštevník
          popen nemoze pouzivat,
          moze pouzivat exec, fork, ...


          Vedeli by ste niekto?