2012-02-25 65 views
-3

我想編寫一個C代碼來壓縮unix文件。我使用UNIX shell命令「zip -r filepath」使用系統函數來實現它。當我直接通過UNIX shell執行它時,zip -r filepath命令正在工作。如何通過UNIX命令行以編程方式壓縮文件?

我威滕的代碼如下

#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命令放在引號中,儘管它不起作用。

+5

你需要花多一點時間讀一好的C書和教程/例子... – Mat 2012-02-25 10:19:39

回答

0

當編譯器解析int system(const char *zip -r /root/Desktop/hi.txt);它開始將其解釋爲某事物的聲明,因爲int是一個類型,system可以很好地標識名稱和因爲父母和尾隨;它可能被解釋爲函數原型。但是然後編譯器扼殺了-r /root/Desktop/hi.txt,因爲它不能被解析爲函數參數列表的有效部分。

你並不需要聲明,你需要一個函數調用,所以你放棄intconst char *和字符串參數需要被引用:

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

非常感謝Alex .......我現在可以執行它! – priya 2012-02-25 19:10:25

4

那不是你如何調用C的函數嘗試:

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

嗨,非常感謝!這工作。 – priya 2012-02-25 19:08:38

相關問題