在C语言中使用 #define 定义路径

4

我想定义这样一个路径:

#define PATH /abc/xyz/lmn

这个PATH是一个目录,其中有文件foo1、foo2、foo3,一直到foo115。

我如何在“open”调用中使用这个#define来打开foo1、foo2、... foo115?

我想基本上使用指令来完成这个:

fd = open("/abc/xyz/lmn/foo1", O_RDONLY);
3个回答

9
#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);
   }

}

2
既然您已经在使用sprintf,那么使用const char*会比使用define更好,不是吗? - Joachim Isaksson
我是老派(或许只是老)的人,#define 是我的习惯 - const char* 也同样好用 :) - KevinDTimm
下一个问题是,原帖作者真的希望这是一个编译时常量吗?这个路径有可能会改变吗? - John Bode
基于“我如何在“打开”调用中使用此#define来打开foo1、foo2、... foo115?”的问题,我不同意。 - KevinDTimm

1
#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
例如,要打开foo42,您可以执行以下操作:
#define PATH  "/abc/xyz/lmn"
fd = open(PATH "/foo42", O_RDONLY);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接