Avatar billede baxos Nybegynder
31. januar 2008 - 20:17 Der er 14 kommentarer og
1 løsning

List files

int dirExist(const char *dir){
  struct dirent *dirp;
  DIR *dp;
  cout << "Checking input for " << dir << endl;
  if((dp = opendir(dir))== NULL){
    return FALSE;
  }
  while ((dirp = readdir(dp)) != NULL){
    cout << dp << " ./tryWrite" << endl;
    ofstream testWrite("./tryWrite");
    if (testWrite.is_open()){
      cout << "Writing to " << dp << endl;
      testWrite << "Test writing do not delete!" ;
      testWrite.close();
      std::remove("./tryWrite");
      return TRUE;
    }
    else
      {
    return FALSE;
      }



    return TRUE;
  } 
}

Nogen der kan set fejlen i dette stykke kode?
Min mening ned koden var at den skulle kunne udskille mapper fra en en liste over filer/mapper i en anden mappe :p
Avatar billede arne_v Ekspert
31. januar 2008 - 20:28 #1
Hvilken fejl faar du ?
Avatar billede arne_v Ekspert
31. januar 2008 - 20:29 #2
Er det funktionsnavn eller kode logik som beskriver formaalet ?

Hvios der foerste kunne du spare en masse kode ved ar bruge stats.
Avatar billede baxos Nybegynder
31. januar 2008 - 20:59 #3
Forstår dig ikke helt..
Det er en funktion jeg har lavet som der ikke virker.. der kommer ingen fejl når jeg compilere det men den siger at en mappe er en fil
ergo den finder ikke ud af om inputet er en mappe eller fil
Avatar billede arne_v Ekspert
31. januar 2008 - 21:16 #4
Hvis du bare vil checke om noget er en mappe eller en fil skal du netop bruge stats !
Avatar billede arne_v Ekspert
31. januar 2008 - 21:16 #5
struct stat stbuf;

stat(fnm,&stbuf);
if(!S_ISDIR(stbuf.st_mode))
Avatar billede baxos Nybegynder
31. januar 2008 - 21:38 #6
og så får man true hvis det er en mappe?
Avatar billede arne_v Ekspert
31. januar 2008 - 21:40 #7
Jeg tror at !S_ISDIR returnerer false men at S_ISDIR returnerer true.
Avatar billede baxos Nybegynder
01. februar 2008 - 09:36 #8
ja efter nærmere eftertanke tror jeg du har ret dog ser jeg ikke hvor jeg putter navnet på filen/mappen ind?=
Avatar billede baxos Nybegynder
01. februar 2008 - 11:44 #9
arne_V >
Smid et svar og mange tak for hjælpen det var mig der var en tumpe fordi jeg ikke havde include <sys/stat.h>

Mange tak! :)
Avatar billede baxos Nybegynder
01. februar 2008 - 11:47 #10
Argh jeg er for hurtig til at skrive nu siger den os filer er mapper :S
Avatar billede arne_v Ekspert
01. februar 2008 - 15:06 #11
Mystisk.

#include <stdio.h>
#include <sys/stat.h>

int main(int argc, char *argv[])
{
    struct stat stbuf;
    stat(argv[1],&stbuf);
    if(S_ISDIR(stbuf.st_mode))
      printf("%s is a dir\n",argv[1]);
    else
      printf("%s is not a dir\n",argv[1]);
    return 0;
}

virker hos mig:

C:\>isdir util
util is a dir

C:\>isdir isdir.c
isdir.c is not a dir

Kode ? Platform ? Compiler ?
Avatar billede baxos Nybegynder
01. februar 2008 - 15:21 #12
Er på linux og bruger c++ til at compilere med der kommer heller ingen fejl den finder bare ikke forskellen på en mappe og en fil
Avatar billede arne_v Ekspert
02. februar 2008 - 04:39 #13
Det virker hos mig:

[arne@arne3 ~]$ ./isdir isdir.c
isdir.c is not a dir
[arne@arne3 ~]$ ./isdir test
test is a dir
Avatar billede baxos Nybegynder
08. februar 2008 - 20:03 #14
Gør den også ved mig nu, fordi jeg fik ikke sendt den fulde sti over til funktionen
Vær venlig at smid et svar :)
Avatar billede arne_v Ekspert
08. februar 2008 - 20:20 #15
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester