我想编写一个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命令放在引号中,即使它不起作用。
答案 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
上窒息,因为它无法被解析为函数参数列表的有效部分。
您不需要声明,需要函数调用,因此删除int
和const char *
,并且需要引用字符串参数:
...
{
system("zip -r /root/Desktop/hi.txt");
return 0;
}