Определение пути с помощью #define в C - PullRequest
3 голосов
/ 13 марта 2012

Я хочу определить путь следующим образом:

#define PATH /abc/xyz/lmn

Этот PATH является каталогом, содержащим файлы foo1, foo2, foo3, ... foo115.

Как я могу использовать этот #define в вызове open для открытия foo1, foo2, ... foo115?

Я хочу сделать это, используя директиву:

fd = open("/abc/xyz/lmn/foo1", O_RDONLY);

Ответы [ 3 ]

9 голосов
/ 13 марта 2012
#define PATH "/abc/xyz/lmn"

int main (int argc, char **argv)
{
   char file2open[256];
   int i;

   for (i = 1; i <= 115; i++)
   {
      sprintf (file2open, "%sfoo%d", PATH, i);
      fd = open (file2open, O_RDONLY)
      ......
      close (fd);
   }

}
1 голос
/ 13 марта 2012
#define PATH "/some/path/to/foo/files"

for (int i = 0; 1 < SomeNumberOfFiles; i++)
{
    char carray[256] = strcat(PATH, "foo");
    carray = strcat(carray, char(i));
    //Do something with the carray filename
}

Возможно, я смешал немного C ++, извините. Я пытался сохранить это как C, как мог.

0 голосов
/ 13 марта 2012

Например, чтобы открыть foo42, вы можете сделать:

#define PATH  "/abc/xyz/lmn"
fd = open(PATH "/foo42", O_RDONLY);
...