2012-02-25 13 views
-3

ファイルをunixで圧縮するためのCコードを書いたかったのです。 UNIXシェルコマンド "zip -r filepath"を使ってシステム機能を使って実装しました。 zip -r filepathコマンドは、UNIXシェルから直接実行すると動作します。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

答えて

0

名前と括弧と後ろのために;それは関数プロトタイプとして解釈される可能性があります。しかし、コンパイラは-r /root/Desktop/hi.txtでチョークします。これは、関数パラメータリストの有効な部分として解析できないためです。

あなたが宣言を必要としない、あなたはintconst char *をドロップするので、あなたは、関数呼び出しを必要とし、文字列パラメータを引用符で囲む必要があります:

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

ありがとうアレックス.......私はそれを今実行することができます! – priya

4

あなたは試してみてくださいC.で関数を呼び出す方法はありません:コンパイラはintがタイプで、systemは非常によく識別子であることができるので、何かの宣言としてそれを解釈を開始int system(const char *zip -r /root/Desktop/hi.txt);解析するとき

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

こんにちは、ありがとう!これはうまくいった。 – priya

関連する問題