如何通过UNIX命令行以编程方式压缩文件?

时间:2012-02-25 10:15:27

标签: c unix zip

我想编写一个C代码来压缩unix中的文件。我使用UNIX shell命令“zip -r filepath”使用系统函数实现它。当我直接通过UNIX shell执行它时,zip -r filepath命令正在运行。

我已经找到了如下代码

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
int system(const char *zip -r /root/Desktop/hi.txt);
return 0;
}

但我收到编译时错误

"error:expected ‘;’, ‘,’ or ‘)’ before string constant"

syntax system function : http://linux.die.net/man/3/system
int system(const char *command);

我该如何解决这个问题?我尝试将UNIX命令放在引号中,即使它不起作用。

2 个答案:

答案 0 :(得分:4)

这不是你在C中调用函数的方法。试试:

system("zip -r /root/Desktop/hi.txt");

答案 1 :(得分:0)

当编译器解析int system(const char *zip -r /root/Desktop/hi.txt);时,它开始将其解释为某事物的声明,因为int是一种类型而system很可能是一个标识符名称,并且因为parens和尾随;它可以被解释为函数原型。但随后编译器在-r /root/Desktop/hi.txt上窒息,因为它无法被解析为函数参数列表的有效部分。

您不需要声明,需要函数调用,因此删除intconst char *,并且需要引用字符串参数:

...
{
system("zip -r /root/Desktop/hi.txt");
return 0;
}