2017-02-27 7 views
0

可能な限り多くのファイルが存在しますが、少なくとも1つは必要です。 フォームは "実行可能ファイル名" "フラグ" "アーカイブ名" "ファイル..."です。コマンドラインでいくつのファイルが指定されているかを調べるにはどうすればよいですか?私はループを使わなければならないことを知っている。それから、どれくらいのファイルがあるかを知ったら、各ファイルを開き、各ファイルをどのようにしてアーカイブファイルに入れるのですか?アーカイブファイルはバイナリですが、正しいですか?私はいくつのファイルが与えられたのか、各ファイルの名前、各ファイルの名前の長さ、各ファイルのサイズ、各ファイルの内容を記録してから、すべてをアーカイブファイルに記録する必要があります。いいえ圧縮アーカイバ実行ファイルとその一部を作成するには、コマンドライン引数から与えられたファイルをアーカイブすることです。

+1

'argc'は' argv'の要素の総数です( 'argv [0]'の実行可能ファイル名を含みます)。だから 'argc - 3 'は入力ファイルの数です。 – Barmar

+1

既存のアーカイブ形式の標準に従っているのですか、独自の形式を作成することはできますか?あなたはあなたのメインプログラムに 'int main(int argc、char ** argv)'があると仮定して、 'argc'からいくつの引数があるか知っています。そこにいくつのファイルがあるか調べるためにループは必要ありません。ファイルのリストを反復処理するにはループが必要です。あなたのアーカイブには集中型辞書か分散型辞書がありますか?ファイルのサイズと名前(およびアーカイブ内の場所)の情報をファイルの一番上に(一元化して)記録するのですか、アーカイブ内の各ファイルの前に情報を持っていますか? –

+0

はい私はint main(int argc、char ** argv)を持っているので、大丈夫ですか?ターミナルは自動的にargcの値を知っていますか?そして、argcにいくつの値が入っているかに基づいて、どのように各ファイルをループするのですか?しかし、ファイルはargv [3]までリストアップされていないので、ファイルをループしてアーカイブファイルに書き込んで書き込む方法を確認するにはどうすればよいですか?そのループはどのように見えますか? – melb27

答えて

0
char *filenames[argc-3]; 
for(i = 3; i < argc; i++) 
{ 
    filenames[i-3] = argv[i]; 
    printf("Files = %s\n", filenames 
} 

は、だから、ループは「実行可能」「フラグ」を除くありますどのように多くのargc引数を見つけるんだろう「アーカイブ名。」それに続いて、私はargcにいくつのファイルがあるのでしょう。そして、ファイル名[]はファイルをコマンドライン引数に保存しますか?では、どのように配列をループして各ファイルを開き、私が呼ぶ別の関数でサイズを決定するのでしょうか?

関連する問題