我试图在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);
然后我收到错误:预期')'在字符串之前
任何想法如何解决或以不同的方式实施?谢谢。
答案 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);