打开某个目录并在c中写入

时间:2015-04-16 09:08:43

标签: c linux file

我试图在c中实现这个linux命令序列: cd /文件夹/文件夹; echo 1000>文件;

我试过这段代码并且工作正常:

int fd, len;
char buf[MAX_BUF];
fd = open("/folder/folder" "/file", O_WRONLY);
len = snprintf(buf, sizeof(buf), "%d", 1000);
write(fd, buf, len);

但我要声明:char * a = some other folder,如果我的文件夹会改变;并使用它:

open(a "/file", O_WRONLY); 

然后我收到错误:预期')'在字符串之前

任何想法如何解决或以不同的方式实施?谢谢。

2 个答案:

答案 0 :(得分:4)

您只能使用邻接来连接字符串文字,而不是运行时字符串。

要做到后者,只需使用您似乎已经知道的snprintf()

类似的东西:

char fn[1024];
const char *a = "/hello/filesystem";

snprintf(fn, sizeof fn, "%s/file", a);

或者,自然地,将整个有效路径放在变量中以:

开头
const char *a = "/hello/filesystem/file";

但这很明显,所以我假设你想要一个运行时解决方案。

此外,您还没有打开某个目录",您正在中打开 >某个目录。

最后,在依赖文件描述符有效之前,检查open()是否成功。

答案 1 :(得分:3)

你必须这样使用。

char a[]="path to file";

在开放功能中,

 open(a,O_WRONLY);